Loading src/Command/CreateUserCommand.php +10 −13 Changes for src/Command/CreateUserCommand.php: 10 added lines, 13 removed lines. Original line number Diff line number Diff line Loading @@ -2,25 +2,27 @@ namespace Unicaen\Utilisateur\Command; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Unicaen\Utilisateur\Entity\Role; use Unicaen\Utilisateur\Entity\User; use Unicaen\Utilisateur\Repository\UtilisateurRepository; use Unicaen\Utilisateur\Service\UtilisateurService; #[AsCommand(name: 'utilisateur:create-user')] class CreateUserCommand extends Command { private EntityManagerInterface $entityManager; private UtilisateurService $utilisateurService; private UserPasswordHasherInterface $passwordHasher; public function __construct(EntityManagerInterface $entityManager, UserPasswordHasherInterface $passwordHasher) public function __construct(UtilisateurService $utilisateurService, UserPasswordHasherInterface $passwordHasher) { $this->entityManager = $entityManager; $this->utilisateurService = $utilisateurService; $this->passwordHasher = $passwordHasher; parent::__construct(); Loading @@ -39,7 +41,7 @@ class CreateUserCommand extends Command $io->info("Création d'un compte utilisateur local"); $username = $io->ask('Username'); $existingUser = $this->entityManager->getRepository(User::class)->findOneBy(['username' => $username]); $existingUser = $this->utilisateurService->findOneBy(['username' => $username]); if ($existingUser) { $io->error('Un utilisateur avec ce username existe déjà'); return Command::FAILURE; Loading @@ -47,7 +49,7 @@ class CreateUserCommand extends Command $email = $io->ask('Email'); // Check if user with same mail exists $existingUser = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $email]); $existingUser = $this->utilisateurService->findOneBy(['email' => $email]); if ($existingUser) { $io->error('Un utilisateur avec cette adresse mail existe déjà'); return Command::FAILURE; Loading @@ -66,13 +68,8 @@ class CreateUserCommand extends Command $user->setDisplayName($dipslayName); $user->setEmail($email); $user->setPassword($this->passwordHasher->hashPassword($user,$password)); $roleUser = $this->entityManager->getRepository(Role::class)->findOneBy(['code' => 'ROLE_USER']); if ($roleUser) { $user->addRole($roleUser); } $this->entityManager->persist($user); $this->entityManager->flush(); $this->utilisateurService->add($user); $io->success('Utilisateur créé.'); return Command::SUCCESS; Loading src/Event/UserCreateEvent.php 0 → 100644 +36 −0 Changes for src/Event/UserCreateEvent.php: 36 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Unicaen\Utilisateur\Event; use Symfony\Contracts\EventDispatcher\Event; use Symfony\Component\Security\Core\User\UserInterface; use Unicaen\Utilisateur\Entity\User; /** * Evevenement generer par UnicaenAuthentification lorsque l'authentification est réussite mais qu'il n'y a pas d'utilisateur correspondant * (cas d'une première authentification via LDAP/CAS/Shib) * Pré-remplie l'utilisateur avec les données issue de l'authentification. * Charge au listener éventuel d'enregistrer cette utilisateur en base de données */ class UserCreateEvent extends Event { public function __construct(?User $user = null) { $this->user = $user; return $this; } protected ?User $user = null; public function getUser(): ?User { return $this->user; } public function setUser(?User $user): static { $this->user = $user; return $this; } public const CREATE_USER = 'unicaen.utilisateur.create-user'; } src/Event/UserCreateListener.php 0 → 100644 +39 −0 Changes for src/Event/UserCreateListener.php: 39 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Unicaen\Utilisateur\Event; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Unicaen\Utilisateur\Entity\User; use Unicaen\Utilisateur\Repository\UtilisateurRepository; use Symfony\Component\Security\Core\User\UserInterface; use Unicaen\Utilisateur\Service\UtilisateurService; /** * Cretion automatique de l'utilisateur si celà est autorisé * basé sur * @see Symfony\Component\Security\Http\EventListener\UserProviderListener */ class UserCreateListener implements EventSubscriberInterface { public function __construct( private UtilisateurService $utilisateurService, ) {} public function onCreateUser(UserCreateEvent $userCreateEvent): ?User { $user = $userCreateEvent->getUser(); $exist = $this->utilisateurService->findOneBy(['username' => $user->getUsername()]); if($exist) {return null;} return $this->utilisateurService->add($user); } public static function getSubscribedEvents(): array { return [UserCreateEvent::CREATE_USER => ['onCreateUser', 1]]; } } src/Service/UtilisateurService.php +17 −1 Changes for src/Service/UtilisateurService.php: 17 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -3,16 +3,32 @@ namespace Unicaen\Utilisateur\Service; use Doctrine\ORM\EntityManagerInterface; use Unicaen\Utilisateur\Entity\User; use Unicaen\Utilisateur\Model\UserInterface; use Unicaen\Utilisateur\Repository\UtilisateurRepository; class UtilisateurService { public function __construct( private EntityManagerInterface $em private EntityManagerInterface $em, private UtilisateurRepository $repository, ) { } public function findOneBy(array $criteria, array|null $orderBy = null) : ?User { return $this->repository->findOneBy($criteria, $orderBy); } public function add(User $user) : User { $this->em->persist($user); $this->em->flush(); return $user; } public function setDefaultActiveRoleForUser(UserInterface $user): void { if (!$user->getActiveRole() && !$user->getFullRoles()->isEmpty()) { Loading src/State/UtilisateurMeStateProvider.php +1 −3 Changes for src/State/UtilisateurMeStateProvider.php: 1 added line, 3 removed lines. Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ namespace Unicaen\Utilisateur\State; use ApiPlatform\Metadata\Operation; use ApiPlatform\State\ProviderInterface; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Unicaen\Privilege\Service\PrivilegeService; use Unicaen\Utilisateur\Dto\PerimetreUtilisateurMeDto; use Unicaen\Utilisateur\Dto\UtilisateurMeResource; Loading @@ -17,8 +16,7 @@ readonly class UtilisateurMeStateProvider implements ProviderInterface public function __construct( private Security $security, private PrivilegeService $privilegeService, private UtilisateurService $utilisateurService, private ParameterBagInterface $parameterBag, private UtilisateurService $utilisateurService ) { } Loading Loading
src/Command/CreateUserCommand.php +10 −13 Changes for src/Command/CreateUserCommand.php: 10 added lines, 13 removed lines. Original line number Diff line number Diff line Loading @@ -2,25 +2,27 @@ namespace Unicaen\Utilisateur\Command; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Unicaen\Utilisateur\Entity\Role; use Unicaen\Utilisateur\Entity\User; use Unicaen\Utilisateur\Repository\UtilisateurRepository; use Unicaen\Utilisateur\Service\UtilisateurService; #[AsCommand(name: 'utilisateur:create-user')] class CreateUserCommand extends Command { private EntityManagerInterface $entityManager; private UtilisateurService $utilisateurService; private UserPasswordHasherInterface $passwordHasher; public function __construct(EntityManagerInterface $entityManager, UserPasswordHasherInterface $passwordHasher) public function __construct(UtilisateurService $utilisateurService, UserPasswordHasherInterface $passwordHasher) { $this->entityManager = $entityManager; $this->utilisateurService = $utilisateurService; $this->passwordHasher = $passwordHasher; parent::__construct(); Loading @@ -39,7 +41,7 @@ class CreateUserCommand extends Command $io->info("Création d'un compte utilisateur local"); $username = $io->ask('Username'); $existingUser = $this->entityManager->getRepository(User::class)->findOneBy(['username' => $username]); $existingUser = $this->utilisateurService->findOneBy(['username' => $username]); if ($existingUser) { $io->error('Un utilisateur avec ce username existe déjà'); return Command::FAILURE; Loading @@ -47,7 +49,7 @@ class CreateUserCommand extends Command $email = $io->ask('Email'); // Check if user with same mail exists $existingUser = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $email]); $existingUser = $this->utilisateurService->findOneBy(['email' => $email]); if ($existingUser) { $io->error('Un utilisateur avec cette adresse mail existe déjà'); return Command::FAILURE; Loading @@ -66,13 +68,8 @@ class CreateUserCommand extends Command $user->setDisplayName($dipslayName); $user->setEmail($email); $user->setPassword($this->passwordHasher->hashPassword($user,$password)); $roleUser = $this->entityManager->getRepository(Role::class)->findOneBy(['code' => 'ROLE_USER']); if ($roleUser) { $user->addRole($roleUser); } $this->entityManager->persist($user); $this->entityManager->flush(); $this->utilisateurService->add($user); $io->success('Utilisateur créé.'); return Command::SUCCESS; Loading
src/Event/UserCreateEvent.php 0 → 100644 +36 −0 Changes for src/Event/UserCreateEvent.php: 36 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Unicaen\Utilisateur\Event; use Symfony\Contracts\EventDispatcher\Event; use Symfony\Component\Security\Core\User\UserInterface; use Unicaen\Utilisateur\Entity\User; /** * Evevenement generer par UnicaenAuthentification lorsque l'authentification est réussite mais qu'il n'y a pas d'utilisateur correspondant * (cas d'une première authentification via LDAP/CAS/Shib) * Pré-remplie l'utilisateur avec les données issue de l'authentification. * Charge au listener éventuel d'enregistrer cette utilisateur en base de données */ class UserCreateEvent extends Event { public function __construct(?User $user = null) { $this->user = $user; return $this; } protected ?User $user = null; public function getUser(): ?User { return $this->user; } public function setUser(?User $user): static { $this->user = $user; return $this; } public const CREATE_USER = 'unicaen.utilisateur.create-user'; }
src/Event/UserCreateListener.php 0 → 100644 +39 −0 Changes for src/Event/UserCreateListener.php: 39 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Unicaen\Utilisateur\Event; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Unicaen\Utilisateur\Entity\User; use Unicaen\Utilisateur\Repository\UtilisateurRepository; use Symfony\Component\Security\Core\User\UserInterface; use Unicaen\Utilisateur\Service\UtilisateurService; /** * Cretion automatique de l'utilisateur si celà est autorisé * basé sur * @see Symfony\Component\Security\Http\EventListener\UserProviderListener */ class UserCreateListener implements EventSubscriberInterface { public function __construct( private UtilisateurService $utilisateurService, ) {} public function onCreateUser(UserCreateEvent $userCreateEvent): ?User { $user = $userCreateEvent->getUser(); $exist = $this->utilisateurService->findOneBy(['username' => $user->getUsername()]); if($exist) {return null;} return $this->utilisateurService->add($user); } public static function getSubscribedEvents(): array { return [UserCreateEvent::CREATE_USER => ['onCreateUser', 1]]; } }
src/Service/UtilisateurService.php +17 −1 Changes for src/Service/UtilisateurService.php: 17 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -3,16 +3,32 @@ namespace Unicaen\Utilisateur\Service; use Doctrine\ORM\EntityManagerInterface; use Unicaen\Utilisateur\Entity\User; use Unicaen\Utilisateur\Model\UserInterface; use Unicaen\Utilisateur\Repository\UtilisateurRepository; class UtilisateurService { public function __construct( private EntityManagerInterface $em private EntityManagerInterface $em, private UtilisateurRepository $repository, ) { } public function findOneBy(array $criteria, array|null $orderBy = null) : ?User { return $this->repository->findOneBy($criteria, $orderBy); } public function add(User $user) : User { $this->em->persist($user); $this->em->flush(); return $user; } public function setDefaultActiveRoleForUser(UserInterface $user): void { if (!$user->getActiveRole() && !$user->getFullRoles()->isEmpty()) { Loading
src/State/UtilisateurMeStateProvider.php +1 −3 Changes for src/State/UtilisateurMeStateProvider.php: 1 added line, 3 removed lines. Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ namespace Unicaen\Utilisateur\State; use ApiPlatform\Metadata\Operation; use ApiPlatform\State\ProviderInterface; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Unicaen\Privilege\Service\PrivilegeService; use Unicaen\Utilisateur\Dto\PerimetreUtilisateurMeDto; use Unicaen\Utilisateur\Dto\UtilisateurMeResource; Loading @@ -17,8 +16,7 @@ readonly class UtilisateurMeStateProvider implements ProviderInterface public function __construct( private Security $security, private PrivilegeService $privilegeService, private UtilisateurService $utilisateurService, private ParameterBagInterface $parameterBag, private UtilisateurService $utilisateurService ) { } Loading