diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 6f64b7d..f5ea550 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -16,6 +16,7 @@ use App\Service\UserOrganizationAppService; use App\Service\UserOrganizationService; use App\Service\UserService; use Doctrine\ORM\EntityManagerInterface; +use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; @@ -29,14 +30,14 @@ class UserController extends AbstractController private const ACCESS_DENIED = 'Access denied'; public function __construct( - private readonly EntityManagerInterface $entityManager, - private readonly UserService $userService, - private readonly ActionService $actionService, - private readonly UserOrganizationAppService $userOrganizationAppService, - private readonly UserOrganizationService $userOrganizationService, - private readonly UserRepository $userRepository, + private readonly EntityManagerInterface $entityManager, + private readonly UserService $userService, + private readonly ActionService $actionService, + private readonly UserOrganizationAppService $userOrganizationAppService, + private readonly UserOrganizationService $userOrganizationService, + private readonly UserRepository $userRepository, private readonly UsersOrganizationsRepository $uoRepository, - private readonly OrganizationsRepository $organizationRepository, + private readonly OrganizationsRepository $organizationRepository, private readonly LoggerInterface $logger, ) { } @@ -130,52 +131,61 @@ class UserController extends AbstractController public function new(Request $request): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); - $actingUser = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier()); - if ($this->userService->hasAccessTo($actingUser)) { - $user = new User(); - $form = $this->createForm(UserForm::class, $user); - $form->handleRequest($request); - $orgId = $request->get('organizationId'); + try { + $actingUser = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier()); + if ($this->userService->hasAccessTo($actingUser)) { + $user = new User(); + $form = $this->createForm(UserForm::class, $user); + $form->handleRequest($request); + $orgId = $request->get('organizationId'); - if ($form->isSubmitted() && $form->isValid()) { + if ($form->isSubmitted() && $form->isValid()) { - // Handle file upload - $picture = $form->get('pictureUrl')->getData(); + // Handle file upload + $picture = $form->get('pictureUrl')->getData(); - if ($picture) { - $this->userService->handleProfilePicture($user, $picture); - } - - //FOR TEST PURPOSES, SETTING A DEFAULT RANDOM PASSWORD - $user->setPassword($this->userService->generateRandomPassword()); - if ($orgId) { - $org = $this->organizationRepository->find($orgId); - if ($org) { - $uo = new UsersOrganizations(); - $uo->setUsers($user); - $uo->setOrganization($org); - $uo->setStatut("INVITED"); - $uo->setIsActive(false); - $this->entityManager->persist($uo); - $this->actionService->createAction("Create new user", $user, $org, "Added user to organization" . $user->getUserIdentifier() . " for organization " . $org->getName()); - return $this->redirectToRoute('organization_show', ['id' => $orgId]); + if ($picture) { + $this->userService->handleProfilePicture($user, $picture); } + + //FOR TEST PURPOSES, SETTING A DEFAULT RANDOM PASSWORD + $user->setPassword($this->userService->generateRandomPassword()); + if ($orgId) { + $org = $this->organizationRepository->find($orgId); + if ($org) { + $uo = new UsersOrganizations(); + $uo->setUsers($user); + $uo->setOrganization($org); + $uo->setStatut("INVITED"); + $uo->setIsActive(false); + $this->entityManager->persist($uo); + $this->actionService->createAction("Create new user", $user, $org, "Added user to organization" . $user->getUserIdentifier() . " for organization " . $org->getName()); + $this->logger->notice("User added to organization " . $org->getName()); + } + } + $this->actionService->createAction("Create new user", $actingUser, null, $user->getUserIdentifier()); + $this->logger->notice("User created " . $user->getUserIdentifier()); + $this->entityManager->persist($user); + $this->entityManager->flush(); + if( $orgId) { + return $this->redirectToRoute('user_show', ['id' => $user->getId(), 'organizationId' => $orgId]); + } + return $this->redirectToRoute('user_index'); } - - $this->actionService->createAction("Create new user", $actingUser, null, $user->getUserIdentifier()); - - $this->entityManager->persist($user); - $this->entityManager->flush(); - - return $this->redirectToRoute('user_index'); } - return $this->render('user/new.html.twig', [ 'user' => $user, 'form' => $form->createView(), 'organizationId' => $orgId ]); + } catch (\Exception $e) { + $this->logger->error($e->getMessage()); + if( $orgId) { + return $this->redirectToRoute('organization_show', ['id' => $orgId]); + } + return $this->redirectToRoute('user_index'); } + throw $this->createAccessDeniedException(self::ACCESS_DENIED); } @@ -192,7 +202,7 @@ class UserController extends AbstractController $user->setIsActive(false); $user->setModifiedAt(new \DateTimeImmutable('now')); $this->userOrganizationService->deactivateAllUserOrganizationLinks($user, $actingUser); - if($this->userService->isUserConnected($user->getUserIdentifier())){ + if ($this->userService->isUserConnected($user->getUserIdentifier())) { $this->userService->revokeUserTokens($user->getUserIdentifier()); } $this->entityManager->persist($user); @@ -305,7 +315,7 @@ class UserController extends AbstractController $user->setModifiedAt(new \DateTimeImmutable('now')); $this->userOrganizationService->deactivateAllUserOrganizationLinks($user, $actingUser); $user->setIsDeleted(true); - if($this->userService->isUserConnected($user)){ + if ($this->userService->isUserConnected($user)) { $this->userService->revokeUserTokens($user->getUserIdentifier()); } $this->entityManager->persist($user);