add information on oauth2/userinfo

This commit is contained in:
Charles 2026-02-25 09:20:41 +01:00
parent f89bd101fe
commit 9f430a3656
1 changed files with 27 additions and 3 deletions

View File

@ -2,6 +2,7 @@
namespace App\Controller; namespace App\Controller;
use App\Repository\UsersOrganizationsRepository;
use App\Service\AccessTokenService; use App\Service\AccessTokenService;
use App\Service\LoggerService; use App\Service\LoggerService;
use App\Service\UserService; 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'])] #[Route('/oauth2/userinfo', name: 'userinfo', methods: ['GET'])]
public function userinfo(Request $request): JsonResponse public function userinfo(Request $request, UsersOrganizationsRepository $uoRepository): JsonResponse
{ {
$user = $this->getUser(); $user = $this->getUser();
if (!$user) { if (!$user) {
$this->loggerService->logAccessDenied($user->getId()); $this->loggerService->logAccessDenied($user->getId());
return new JsonResponse(['error' => 'Unauthorized'], 401); 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'); $this->loggerService->logUserAction($user->getId(), $user->getId(), 'Accessed userinfo endpoint');
return new JsonResponse([ return new JsonResponse([
@ -39,6 +61,7 @@ class OAuth2Controller extends AbstractController
'name' => $user->getName(), 'name' => $user->getName(),
'email' => $user->getEmail(), 'email' => $user->getEmail(),
'surname' => $user->getSurname(), 'surname' => $user->getSurname(),
'uos' => $result
]); ]);
} }
@ -64,7 +87,8 @@ class OAuth2Controller extends AbstractController
} }
#[Route(path: '/oauth2/revoke_tokens', name: 'revoke_tokens', methods: ['POST'])] #[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 //Check if the user have valid access token
$data = json_decode($request->getContent(), true); $data = json_decode($request->getContent(), true);
$userIdentifier = $data['user_identifier']; $userIdentifier = $data['user_identifier'];