add information on oauth2/userinfo
This commit is contained in:
parent
f89bd101fe
commit
9f430a3656
|
|
@ -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'];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue