Renamed PermissionResolver service to PermissionService

This commit is contained in:
Jan Böhmer 2022-11-14 20:15:06 +01:00
parent 131e9a2850
commit b0c027f805
17 changed files with 50 additions and 53 deletions

View file

@ -4,7 +4,7 @@ namespace App\Command\User;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Repository\UserRepository; use App\Repository\UserRepository;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Helper\Table;
@ -23,10 +23,10 @@ class UsersPermissionsCommand extends Command
protected EntityManagerInterface $entityManager; protected EntityManagerInterface $entityManager;
protected UserRepository $userRepository; protected UserRepository $userRepository;
protected PermissionResolver $permissionResolver; protected PermissionManager $permissionResolver;
protected TranslatorInterface $translator; 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->entityManager = $entityManager;
$this->userRepository = $entityManager->getRepository(User::class); $this->userRepository = $entityManager->getRepository(User::class);

View file

@ -42,7 +42,7 @@ declare(strict_types=1);
namespace App\Form\Permissions; namespace App\Form\Permissions;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
@ -50,10 +50,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class PermissionGroupType extends AbstractType class PermissionGroupType extends AbstractType
{ {
protected PermissionResolver $resolver; protected PermissionManager $resolver;
protected array $perm_structure; protected array $perm_structure;
public function __construct(PermissionResolver $resolver) public function __construct(PermissionManager $resolver)
{ {
$this->resolver = $resolver; $this->resolver = $resolver;
$this->perm_structure = $resolver->getPermissionStructure(); $this->perm_structure = $resolver->getPermissionStructure();

View file

@ -43,7 +43,7 @@ declare(strict_types=1);
namespace App\Form\Permissions; namespace App\Form\Permissions;
use App\Form\Type\TriStateCheckboxType; use App\Form\Type\TriStateCheckboxType;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
@ -53,10 +53,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class PermissionType extends AbstractType class PermissionType extends AbstractType
{ {
protected PermissionResolver $resolver; protected PermissionManager $resolver;
protected array $perm_structure; protected array $perm_structure;
public function __construct(PermissionResolver $resolver) public function __construct(PermissionManager $resolver)
{ {
$this->resolver = $resolver; $this->resolver = $resolver;
$this->perm_structure = $resolver->getPermissionStructure(); $this->perm_structure = $resolver->getPermissionStructure();

View file

@ -42,7 +42,7 @@ declare(strict_types=1);
namespace App\Form\Permissions; namespace App\Form\Permissions;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use RuntimeException; use RuntimeException;
use Symfony\Component\Form\DataMapperInterface; use Symfony\Component\Form\DataMapperInterface;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
@ -54,10 +54,10 @@ use Traversable;
*/ */
final class PermissionsMapper implements DataMapperInterface final class PermissionsMapper implements DataMapperInterface
{ {
private PermissionResolver $resolver; private PermissionManager $resolver;
private bool $inherit; private bool $inherit;
public function __construct(PermissionResolver $resolver, bool $inherit = false) public function __construct(PermissionManager $resolver, bool $inherit = false)
{ {
$this->inherit = $inherit; $this->inherit = $inherit;
$this->resolver = $resolver; $this->resolver = $resolver;

View file

@ -42,7 +42,7 @@ declare(strict_types=1);
namespace App\Form\Permissions; namespace App\Form\Permissions;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use App\Validator\Constraints\NoLockout; use App\Validator\Constraints\NoLockout;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
@ -53,10 +53,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class PermissionsType extends AbstractType class PermissionsType extends AbstractType
{ {
protected PermissionResolver $resolver; protected PermissionManager $resolver;
protected array $perm_structure; protected array $perm_structure;
public function __construct(PermissionResolver $resolver) public function __construct(PermissionManager $resolver)
{ {
$this->resolver = $resolver; $this->resolver = $resolver;
$this->perm_structure = $resolver->getPermissionStructure(); $this->perm_structure = $resolver->getPermissionStructure();

View file

@ -44,9 +44,8 @@ namespace App\Security\Voter;
use App\Entity\Attachments\Attachment; use App\Entity\Attachments\Attachment;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use function in_array; use function in_array;
@ -55,7 +54,7 @@ class AttachmentVoter extends ExtendedVoter
{ {
protected $security; protected $security;
public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager, Security $security) public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security)
{ {
parent::__construct($resolver, $entityManager); parent::__construct($resolver, $entityManager);
$this->security = $security; $this->security = $security;

View file

@ -44,7 +44,7 @@ namespace App\Security\Voter;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Repository\UserRepository; use App\Repository\UserRepository;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter; 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 abstract class ExtendedVoter extends Voter
{ {
protected EntityManagerInterface $entityManager; 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->resolver = $resolver;
$this->entityManager = $entityManager; $this->entityManager = $entityManager;

View file

@ -25,7 +25,7 @@ namespace App\Security\Voter;
use App\Entity\PriceInformations\Orderdetail; use App\Entity\PriceInformations\Orderdetail;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
@ -33,7 +33,7 @@ class OrderdetailVoter extends ExtendedVoter
{ {
protected Security $security; 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); parent::__construct($resolver, $entityManager);
$this->security = $security; $this->security = $security;

View file

@ -2,8 +2,6 @@
namespace App\Security\Voter; namespace App\Security\Voter;
use App\Entity\Attachments\CategoryAttachment;
use App\Entity\Attachments\CurrencyAttachment;
use App\Entity\Parameters\AbstractParameter; use App\Entity\Parameters\AbstractParameter;
use App\Entity\Parameters\AttachmentTypeParameter; use App\Entity\Parameters\AttachmentTypeParameter;
use App\Entity\Parameters\CategoryParameter; use App\Entity\Parameters\CategoryParameter;
@ -16,9 +14,8 @@ use App\Entity\Parameters\MeasurementUnitParameter;
use App\Entity\Parameters\PartParameter; use App\Entity\Parameters\PartParameter;
use App\Entity\Parameters\StorelocationParameter; use App\Entity\Parameters\StorelocationParameter;
use App\Entity\Parameters\SupplierParameter; use App\Entity\Parameters\SupplierParameter;
use App\Entity\PriceInformations\Currency;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use PHPUnit\TextUI\RuntimeException; use PHPUnit\TextUI\RuntimeException;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
@ -28,7 +25,7 @@ class ParameterVoter extends ExtendedVoter
protected Security $security; protected Security $security;
public function __construct(PermissionResolver $resolver, EntityManagerInterface $entityManager, Security $security) public function __construct(PermissionManager $resolver, EntityManagerInterface $entityManager, Security $security)
{ {
$this->security = $security; $this->security = $security;
parent::__construct($resolver, $entityManager); parent::__construct($resolver, $entityManager);

View file

@ -24,9 +24,8 @@ declare(strict_types=1);
namespace App\Security\Voter; namespace App\Security\Voter;
use App\Entity\Parts\PartLot; use App\Entity\Parts\PartLot;
use App\Entity\PriceInformations\Orderdetail;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
@ -34,7 +33,7 @@ class PartLotVoter extends ExtendedVoter
{ {
protected Security $security; 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); parent::__construct($resolver, $entityManager);
$this->security = $security; $this->security = $security;

View file

@ -23,10 +23,9 @@ declare(strict_types=1);
namespace App\Security\Voter; namespace App\Security\Voter;
use App\Entity\Parts\PartLot;
use App\Entity\PriceInformations\Pricedetail; use App\Entity\PriceInformations\Pricedetail;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
@ -34,7 +33,7 @@ class PricedetailVoter extends ExtendedVoter
{ {
protected Security $security; 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); parent::__construct($resolver, $entityManager);
$this->security = $security; $this->security = $security;

View file

@ -42,7 +42,7 @@ declare(strict_types=1);
namespace App\Services\TranslationExtractor; namespace App\Services\TranslationExtractor;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Symfony\Component\Translation\Extractor\ExtractorInterface; use Symfony\Component\Translation\Extractor\ExtractorInterface;
use Symfony\Component\Translation\MessageCatalogue; use Symfony\Component\Translation\MessageCatalogue;
@ -55,7 +55,7 @@ final class PermissionExtractor implements ExtractorInterface
private array $permission_structure; private array $permission_structure;
private bool $finished = false; private bool $finished = false;
public function __construct(PermissionResolver $resolver) public function __construct(PermissionManager $resolver)
{ {
$this->permission_structure = $resolver->getPermissionStructure(); $this->permission_structure = $resolver->getPermissionStructure();
} }

View file

@ -40,7 +40,7 @@ declare(strict_types=1);
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * 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\Configuration\PermissionsConfiguration;
use App\Entity\UserSystem\Group; use App\Entity\UserSystem\Group;
@ -52,7 +52,12 @@ use Symfony\Component\Config\Definition\Processor;
use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\Yaml\Yaml; 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; protected $permission_structure;

View file

@ -3,15 +3,13 @@
namespace App\Services\UserSystem; namespace App\Services\UserSystem;
use App\Entity\UserSystem\PermissionData; use App\Entity\UserSystem\PermissionData;
use App\Entity\UserSystem\User;
use App\Security\Interfaces\HasPermissionsInterface; use App\Security\Interfaces\HasPermissionsInterface;
use App\Services\PermissionResolver;
class PermissionPresetsHelper class PermissionPresetsHelper
{ {
private PermissionResolver $permissionResolver; private PermissionManager $permissionResolver;
public function __construct(PermissionResolver $permissionResolver) public function __construct(PermissionManager $permissionResolver)
{ {
$this->permissionResolver = $permissionResolver; $this->permissionResolver = $permissionResolver;
} }

View file

@ -44,7 +44,7 @@ namespace App\Validator\Constraints;
use App\Entity\UserSystem\Group; use App\Entity\UserSystem\Group;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\Exception\UnexpectedTypeException; use Symfony\Component\Form\Exception\UnexpectedTypeException;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
@ -53,12 +53,12 @@ use Symfony\Component\Validator\ConstraintValidator;
class NoLockoutValidator extends ConstraintValidator class NoLockoutValidator extends ConstraintValidator
{ {
protected PermissionResolver $resolver; protected PermissionManager $resolver;
protected array $perm_structure; protected array $perm_structure;
protected Security $security; protected Security $security;
protected EntityManagerInterface $entityManager; 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->resolver = $resolver;
$this->perm_structure = $resolver->getPermissionStructure(); $this->perm_structure = $resolver->getPermissionStructure();

View file

@ -43,17 +43,17 @@ declare(strict_types=1);
namespace App\Validator\Constraints; namespace App\Validator\Constraints;
use App\Security\Interfaces\HasPermissionsInterface; use App\Security\Interfaces\HasPermissionsInterface;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use Symfony\Component\Form\Exception\UnexpectedTypeException; use Symfony\Component\Form\Exception\UnexpectedTypeException;
use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\ConstraintValidator;
class ValidPermissionValidator extends ConstraintValidator class ValidPermissionValidator extends ConstraintValidator
{ {
protected PermissionResolver $resolver; protected PermissionManager $resolver;
protected array $perm_structure; protected array $perm_structure;
public function __construct(PermissionResolver $resolver) public function __construct(PermissionManager $resolver)
{ {
$this->resolver = $resolver; $this->resolver = $resolver;
} }

View file

@ -40,24 +40,24 @@ declare(strict_types=1);
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * 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\Group;
use App\Entity\UserSystem\PermissionData; use App\Entity\UserSystem\PermissionData;
use App\Entity\UserSystem\PermissionsEmbed; use App\Entity\UserSystem\PermissionsEmbed;
use App\Entity\UserSystem\User; use App\Entity\UserSystem\User;
use App\Services\PermissionResolver; use App\Services\UserSystem\PermissionManager;
use InvalidArgumentException; use InvalidArgumentException;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class PermissionResolverTest extends WebTestCase class PermissionManagerTest extends WebTestCase
{ {
protected $user_withoutGroup; protected $user_withoutGroup;
protected $user; protected $user;
protected $group; protected $group;
/** /**
* @var PermissionResolver * @var PermissionManager
*/ */
protected $service; protected $service;
@ -67,7 +67,7 @@ class PermissionResolverTest extends WebTestCase
//Get an service instance. //Get an service instance.
self::bootKernel(); self::bootKernel();
$this->service = self::$container->get(PermissionResolver::class); $this->service = self::$container->get(PermissionManager::class);
//Set up a mocked user //Set up a mocked user
$user_perms = new PermissionData(); $user_perms = new PermissionData();