diff --git a/src/Controller/OAuth2Controller.php b/src/Controller/OAuth2Controller.php index 2427772..1f2c008 100644 --- a/src/Controller/OAuth2Controller.php +++ b/src/Controller/OAuth2Controller.php @@ -2,6 +2,7 @@ namespace App\Controller; +use App\Repository\UsersOrganizationsRepository; use App\Service\AccessTokenService; use App\Service\LoggerService; use App\Service\UserService; @@ -20,18 +21,39 @@ class OAuth2Controller extends AbstractController { - public function __construct(private readonly LoggerService $loggerService, private readonly UserService $userService) + public function __construct(private readonly LoggerService $loggerService, private readonly UserService $userService, + ) { } #[Route('/oauth2/userinfo', name: 'userinfo', methods: ['GET'])] - public function userinfo(Request $request): JsonResponse + public function userinfo(Request $request, UsersOrganizationsRepository $uoRepository): JsonResponse { $user = $this->getUser(); if (!$user) { $this->loggerService->logAccessDenied($user->getId()); return new JsonResponse(['error' => 'Unauthorized'], 401); } + $uos = $uoRepository->findBy(['users' => $user]); + + $result = []; + foreach ($uos as $uo) { + $result[] = ['organization' => [ + 'id' => $uo->getOrganization()->getId(), + 'name' => $uo->getOrganization()->getName(), + 'role' => $uo->getRole()->getName() + ] + ]; + if ($uo->getRole()->getName() === "ADMIN") { + $projets = $uo->getOrganization()->getProjects()->toArray(); + $result[count($result) - 1]['organization']['projects'] = array_map(function ($projet) { + return [ + 'id' => $projet->getId(), +// 'name' => $projet->getName() + ]; + }, $projets); + } + } $this->loggerService->logUserAction($user->getId(), $user->getId(), 'Accessed userinfo endpoint'); return new JsonResponse([ @@ -39,6 +61,7 @@ class OAuth2Controller extends AbstractController 'name' => $user->getName(), 'email' => $user->getEmail(), 'surname' => $user->getSurname(), + 'uos' => $result ]); } @@ -64,7 +87,8 @@ class OAuth2Controller extends AbstractController } #[Route(path: '/oauth2/revoke_tokens', name: 'revoke_tokens', methods: ['POST'])] - public function revokeTokens(Security $security, Request $request, AccessTokenService $accessTokenService, LoggerInterface $logger): Response{ + public function revokeTokens(Security $security, Request $request, AccessTokenService $accessTokenService, LoggerInterface $logger): Response + { //Check if the user have valid access token $data = json_decode($request->getContent(), true); $userIdentifier = $data['user_identifier'];