diff --git a/src/Command/User/UsersPermissionsCommand.php b/src/Command/User/UsersPermissionsCommand.php index 9ad38a36..612aa83a 100644 --- a/src/Command/User/UsersPermissionsCommand.php +++ b/src/Command/User/UsersPermissionsCommand.php @@ -4,7 +4,7 @@ namespace App\Command\User; use App\Entity\UserSystem\User; use App\Repository\UserRepository; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; @@ -23,10 +23,10 @@ class UsersPermissionsCommand extends Command protected EntityManagerInterface $entityManager; protected UserRepository $userRepository; - protected PermissionResolver $permissionResolver; + protected PermissionManager $permissionResolver; protected TranslatorInterface $translator; - public function __construct(EntityManagerInterface $entityManager, PermissionResolver $permissionResolver, TranslatorInterface $translator) + public function __construct(EntityManagerInterface $entityManager, PermissionManager $permissionResolver, TranslatorInterface $translator) { $this->entityManager = $entityManager; $this->userRepository = $entityManager->getRepository(User::class); diff --git a/src/Form/Permissions/PermissionGroupType.php b/src/Form/Permissions/PermissionGroupType.php index ee8ba628..8058ef43 100644 --- a/src/Form/Permissions/PermissionGroupType.php +++ b/src/Form/Permissions/PermissionGroupType.php @@ -42,7 +42,7 @@ declare(strict_types=1); namespace App\Form\Permissions; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\Options; @@ -50,10 +50,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver; class PermissionGroupType extends AbstractType { - protected PermissionResolver $resolver; + protected PermissionManager $resolver; protected array $perm_structure; - public function __construct(PermissionResolver $resolver) + public function __construct(PermissionManager $resolver) { $this->resolver = $resolver; $this->perm_structure = $resolver->getPermissionStructure(); diff --git a/src/Form/Permissions/PermissionType.php b/src/Form/Permissions/PermissionType.php index 288b7e24..c95ca3ea 100644 --- a/src/Form/Permissions/PermissionType.php +++ b/src/Form/Permissions/PermissionType.php @@ -43,7 +43,7 @@ declare(strict_types=1); namespace App\Form\Permissions; use App\Form\Type\TriStateCheckboxType; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormInterface; @@ -53,10 +53,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver; class PermissionType extends AbstractType { - protected PermissionResolver $resolver; + protected PermissionManager $resolver; protected array $perm_structure; - public function __construct(PermissionResolver $resolver) + public function __construct(PermissionManager $resolver) { $this->resolver = $resolver; $this->perm_structure = $resolver->getPermissionStructure(); diff --git a/src/Form/Permissions/PermissionsMapper.php b/src/Form/Permissions/PermissionsMapper.php index 6f637c3c..a188ce64 100644 --- a/src/Form/Permissions/PermissionsMapper.php +++ b/src/Form/Permissions/PermissionsMapper.php @@ -42,7 +42,7 @@ declare(strict_types=1); namespace App\Form\Permissions; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use RuntimeException; use Symfony\Component\Form\DataMapperInterface; use Symfony\Component\Form\FormInterface; @@ -54,10 +54,10 @@ use Traversable; */ final class PermissionsMapper implements DataMapperInterface { - private PermissionResolver $resolver; + private PermissionManager $resolver; private bool $inherit; - public function __construct(PermissionResolver $resolver, bool $inherit = false) + public function __construct(PermissionManager $resolver, bool $inherit = false) { $this->inherit = $inherit; $this->resolver = $resolver; diff --git a/src/Form/Permissions/PermissionsType.php b/src/Form/Permissions/PermissionsType.php index ae5d0727..91ea03e3 100644 --- a/src/Form/Permissions/PermissionsType.php +++ b/src/Form/Permissions/PermissionsType.php @@ -42,7 +42,7 @@ declare(strict_types=1); namespace App\Form\Permissions; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use App\Validator\Constraints\NoLockout; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; @@ -53,10 +53,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver; class PermissionsType extends AbstractType { - protected PermissionResolver $resolver; + protected PermissionManager $resolver; protected array $perm_structure; - public function __construct(PermissionResolver $resolver) + public function __construct(PermissionManager $resolver) { $this->resolver = $resolver; $this->perm_structure = $resolver->getPermissionStructure(); diff --git a/src/Security/Voter/AttachmentVoter.php b/src/Security/Voter/AttachmentVoter.php index 3cb8d543..2364cef1 100644 --- a/src/Security/Voter/AttachmentVoter.php +++ b/src/Security/Voter/AttachmentVoter.php @@ -44,9 +44,8 @@ namespace App\Security\Voter; use App\Entity\Attachments\Attachment; use App\Entity\UserSystem\User; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; - use Symfony\Component\Security\Core\Security; use function in_array; @@ -55,7 +54,7 @@ class AttachmentVoter extends ExtendedVoter { protected $security; - public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager, Security $security) + public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security) { parent::__construct($resolver, $entityManager); $this->security = $security; diff --git a/src/Security/Voter/ExtendedVoter.php b/src/Security/Voter/ExtendedVoter.php index 5178d4f6..79743294 100644 --- a/src/Security/Voter/ExtendedVoter.php +++ b/src/Security/Voter/ExtendedVoter.php @@ -44,7 +44,7 @@ namespace App\Security\Voter; use App\Entity\UserSystem\User; use App\Repository\UserRepository; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; @@ -55,9 +55,9 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; abstract class ExtendedVoter extends Voter { protected EntityManagerInterface $entityManager; - protected PermissionResolver $resolver; + protected PermissionManager $resolver; - public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager) + public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager) { $this->resolver = $resolver; $this->entityManager = $entityManager; diff --git a/src/Security/Voter/OrderdetailVoter.php b/src/Security/Voter/OrderdetailVoter.php index 3fb6a566..caebdcc0 100644 --- a/src/Security/Voter/OrderdetailVoter.php +++ b/src/Security/Voter/OrderdetailVoter.php @@ -25,7 +25,7 @@ namespace App\Security\Voter; use App\Entity\PriceInformations\Orderdetail; use App\Entity\UserSystem\User; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Security; @@ -33,7 +33,7 @@ class OrderdetailVoter extends ExtendedVoter { protected Security $security; - public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager, Security $security) + public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security) { parent::__construct($resolver, $entityManager); $this->security = $security; diff --git a/src/Security/Voter/ParameterVoter.php b/src/Security/Voter/ParameterVoter.php index 7135ad08..09ffeaf6 100644 --- a/src/Security/Voter/ParameterVoter.php +++ b/src/Security/Voter/ParameterVoter.php @@ -2,8 +2,6 @@ namespace App\Security\Voter; -use App\Entity\Attachments\CategoryAttachment; -use App\Entity\Attachments\CurrencyAttachment; use App\Entity\Parameters\AbstractParameter; use App\Entity\Parameters\AttachmentTypeParameter; use App\Entity\Parameters\CategoryParameter; @@ -16,9 +14,8 @@ use App\Entity\Parameters\MeasurementUnitParameter; use App\Entity\Parameters\PartParameter; use App\Entity\Parameters\StorelocationParameter; use App\Entity\Parameters\SupplierParameter; -use App\Entity\PriceInformations\Currency; use App\Entity\UserSystem\User; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; use PHPUnit\TextUI\RuntimeException; use Symfony\Component\Security\Core\Security; @@ -28,7 +25,7 @@ class ParameterVoter extends ExtendedVoter protected Security $security; - public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager, Security $security) + public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security) { $this->security = $security; parent::__construct($resolver, $entityManager); diff --git a/src/Security/Voter/PartLotVoter.php b/src/Security/Voter/PartLotVoter.php index b61525ce..d1e1f93d 100644 --- a/src/Security/Voter/PartLotVoter.php +++ b/src/Security/Voter/PartLotVoter.php @@ -24,9 +24,8 @@ declare(strict_types=1); namespace App\Security\Voter; use App\Entity\Parts\PartLot; -use App\Entity\PriceInformations\Orderdetail; use App\Entity\UserSystem\User; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Security; @@ -34,7 +33,7 @@ class PartLotVoter extends ExtendedVoter { protected Security $security; - public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager, Security $security) + public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security) { parent::__construct($resolver, $entityManager); $this->security = $security; diff --git a/src/Security/Voter/PricedetailVoter.php b/src/Security/Voter/PricedetailVoter.php index 2f1140a5..f4a55a42 100644 --- a/src/Security/Voter/PricedetailVoter.php +++ b/src/Security/Voter/PricedetailVoter.php @@ -23,10 +23,9 @@ declare(strict_types=1); namespace App\Security\Voter; -use App\Entity\Parts\PartLot; use App\Entity\PriceInformations\Pricedetail; use App\Entity\UserSystem\User; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Security; @@ -34,7 +33,7 @@ class PricedetailVoter extends ExtendedVoter { protected Security $security; - public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager, Security $security) + public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security) { parent::__construct($resolver, $entityManager); $this->security = $security; diff --git a/src/Services/TranslationExtractor/PermissionExtractor.php b/src/Services/TranslationExtractor/PermissionExtractor.php index b7cb4c8d..11b2154b 100644 --- a/src/Services/TranslationExtractor/PermissionExtractor.php +++ b/src/Services/TranslationExtractor/PermissionExtractor.php @@ -42,7 +42,7 @@ declare(strict_types=1); namespace App\Services\TranslationExtractor; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Symfony\Component\Translation\Extractor\ExtractorInterface; use Symfony\Component\Translation\MessageCatalogue; @@ -55,7 +55,7 @@ final class PermissionExtractor implements ExtractorInterface private array $permission_structure; private bool $finished = false; - public function __construct(PermissionResolver $resolver) + public function __construct(PermissionManager $resolver) { $this->permission_structure = $resolver->getPermissionStructure(); } diff --git a/src/Services/PermissionResolver.php b/src/Services/UserSystem/PermissionManager.php similarity index 97% rename from src/Services/PermissionResolver.php rename to src/Services/UserSystem/PermissionManager.php index 3e41da9d..42947447 100644 --- a/src/Services/PermissionResolver.php +++ b/src/Services/UserSystem/PermissionManager.php @@ -40,7 +40,7 @@ declare(strict_types=1); * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ -namespace App\Services; +namespace App\Services\UserSystem; use App\Configuration\PermissionsConfiguration; use App\Entity\UserSystem\Group; @@ -52,7 +52,12 @@ use Symfony\Component\Config\Definition\Processor; use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Yaml\Yaml; -class PermissionResolver +/** + * This class manages the permissions of users and groups. + * Permissions are defined in the config/permissions.yaml file, and are parsed and resolved by this class using the + * user and hierachical group PermissionData information. + */ +class PermissionManager { protected $permission_structure; diff --git a/src/Services/UserSystem/PermissionPresetsHelper.php b/src/Services/UserSystem/PermissionPresetsHelper.php index bd0c70a2..b73164bc 100644 --- a/src/Services/UserSystem/PermissionPresetsHelper.php +++ b/src/Services/UserSystem/PermissionPresetsHelper.php @@ -3,15 +3,13 @@ namespace App\Services\UserSystem; use App\Entity\UserSystem\PermissionData; -use App\Entity\UserSystem\User; use App\Security\Interfaces\HasPermissionsInterface; -use App\Services\PermissionResolver; class PermissionPresetsHelper { - private PermissionResolver $permissionResolver; + private PermissionManager $permissionResolver; - public function __construct(PermissionResolver $permissionResolver) + public function __construct(PermissionManager $permissionResolver) { $this->permissionResolver = $permissionResolver; } diff --git a/src/Validator/Constraints/NoLockoutValidator.php b/src/Validator/Constraints/NoLockoutValidator.php index cfe5ffb9..2407ff10 100644 --- a/src/Validator/Constraints/NoLockoutValidator.php +++ b/src/Validator/Constraints/NoLockoutValidator.php @@ -44,7 +44,7 @@ namespace App\Validator\Constraints; use App\Entity\UserSystem\Group; use App\Entity\UserSystem\User; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Form\Exception\UnexpectedTypeException; use Symfony\Component\Security\Core\Security; @@ -53,12 +53,12 @@ use Symfony\Component\Validator\ConstraintValidator; class NoLockoutValidator extends ConstraintValidator { - protected PermissionResolver $resolver; + protected PermissionManager $resolver; protected array $perm_structure; protected Security $security; protected EntityManagerInterface $entityManager; - public function __construct(PermissionResolver $resolver, Security $security, EntityManagerInterface $entityManager) + public function __construct(PermissionManager $resolver, Security $security, EntityManagerInterface $entityManager) { $this->resolver = $resolver; $this->perm_structure = $resolver->getPermissionStructure(); diff --git a/src/Validator/Constraints/ValidPermissionValidator.php b/src/Validator/Constraints/ValidPermissionValidator.php index b6f79f4e..4dd9992f 100644 --- a/src/Validator/Constraints/ValidPermissionValidator.php +++ b/src/Validator/Constraints/ValidPermissionValidator.php @@ -43,17 +43,17 @@ declare(strict_types=1); namespace App\Validator\Constraints; use App\Security\Interfaces\HasPermissionsInterface; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use Symfony\Component\Form\Exception\UnexpectedTypeException; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; class ValidPermissionValidator extends ConstraintValidator { - protected PermissionResolver $resolver; + protected PermissionManager $resolver; protected array $perm_structure; - public function __construct(PermissionResolver $resolver) + public function __construct(PermissionManager $resolver) { $this->resolver = $resolver; } diff --git a/tests/Services/PermissionResolverTest.php b/tests/Services/UserSystem/PermissionManagerTest.php similarity index 97% rename from tests/Services/PermissionResolverTest.php rename to tests/Services/UserSystem/PermissionManagerTest.php index cbb25624..b1c8a42d 100644 --- a/tests/Services/PermissionResolverTest.php +++ b/tests/Services/UserSystem/PermissionManagerTest.php @@ -40,24 +40,24 @@ declare(strict_types=1); * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ -namespace App\Tests\Services; +namespace App\Tests\Services\UserSystem; use App\Entity\UserSystem\Group; use App\Entity\UserSystem\PermissionData; use App\Entity\UserSystem\PermissionsEmbed; use App\Entity\UserSystem\User; -use App\Services\PermissionResolver; +use App\Services\UserSystem\PermissionManager; use InvalidArgumentException; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; -class PermissionResolverTest extends WebTestCase +class PermissionManagerTest extends WebTestCase { protected $user_withoutGroup; protected $user; protected $group; /** - * @var PermissionResolver + * @var PermissionManager */ protected $service; @@ -67,7 +67,7 @@ class PermissionResolverTest extends WebTestCase //Get an service instance. self::bootKernel(); - $this->service = self::$container->get(PermissionResolver::class); + $this->service = self::$container->get(PermissionManager::class); //Set up a mocked user $user_perms = new PermissionData();