Commit f2a9048a authored by Anthony Gautreau's avatar Anthony Gautreau
Browse files

Selection auto d'un role actif parmis ceux de l'utilisateur si il n'en a pas

parent fa16f0e6
Loading
Loading
Loading
Loading
+36 −0
Changes for api/src/Service/UtilisateurService.php: 36 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Unicaen\Utilisateur\Service;

use Doctrine\ORM\EntityManagerInterface;

class UtilisateurService
{
    public function __construct(
        private EntityManagerInterface $em
    )
    {
    }

    public function setDefaultActiveRoleForUser($user): void
    {
        if (!$user->getActiveRole() && count($user->getFullRoles()) > 0) {
            if(!$user->getFullRoles()[0]->getRole()){
                return;
            }
            $user->setActiveRole($user->getFullRoles()[0]);
            $this->em->persist($user);
            $this->em->flush();
        }

        if (!$user->getActivePerimetreUserRole() && count($user->getFullRoles()) > 0) {
            $perimetresUserRoles = $user->getFullRoles()[0]?->getPerimetres();
            $perimetreUserRole = $perimetresUserRoles ? $perimetresUserRoles[0] : null;
            if($perimetreUserRole){
                $user->setActivePerimetreUserRole($perimetreUserRole);
                $this->em->persist($user);
                $this->em->flush();
            }
        }
    }
}
 No newline at end of file
+5 −0
Changes for api/src/State/UtilisateurMeStateProvider.php: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -9,12 +9,14 @@ use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Unicaen\Privilege\Service\PrivilegeService;
use Unicaen\Utilisateur\Dto\PerimetreUtilisateurMeDto;
use Unicaen\Utilisateur\Dto\UtilisateurMeResource;
use Unicaen\Utilisateur\Service\UtilisateurService;

readonly class UtilisateurMeStateProvider implements ProviderInterface
{
    public function __construct(
        private Security $security,
        private PrivilegeService $privilegeService,
        private UtilisateurService $utilisateurService,
        private ParameterBagInterface $parameterBag,
    ) {
    }
@@ -32,6 +34,9 @@ readonly class UtilisateurMeStateProvider implements ProviderInterface

        $isPerimetreEnable = $this->privilegeService->isPerimetreEnable();

        if($isPerimetreEnable && ($user->getActivePerimetreUserRole() === null || $user->getActiveRole() === null)){
            $this->utilisateurService->setDefaultActiveRoleForUser($user);
        }

        $dto = new UtilisateurMeResource();
        $dto->id = $user->getId();