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;
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'];