dynamic self client identification for portal
This commit is contained in:
parent
e388999ff7
commit
6569af4720
1
.env
1
.env
|
|
@ -49,6 +49,7 @@ OAUTH_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.key
|
||||||
OAUTH_PASSPHRASE=8170ea18d2e3e05b5c7ae0672a754bf4
|
OAUTH_PASSPHRASE=8170ea18d2e3e05b5c7ae0672a754bf4
|
||||||
OAUTH_ENCRYPTION_KEY=f1b7c279f7992205a0df45e295d07066
|
OAUTH_ENCRYPTION_KEY=f1b7c279f7992205a0df45e295d07066
|
||||||
OAUTH_SSO_IDENTIFIER='sso-own-identifier'
|
OAUTH_SSO_IDENTIFIER='sso-own-identifier'
|
||||||
|
OAUTH_SSO_IDENTIFIER_LOGIN='sso-own-identifier'
|
||||||
###< league/oauth2-server-bundle ###
|
###< league/oauth2-server-bundle ###
|
||||||
|
|
||||||
###> nelmio/cors-bundle ###
|
###> nelmio/cors-bundle ###
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ parameters:
|
||||||
mercure_secret: '%env(MERCURE_JWT_SECRET)%'
|
mercure_secret: '%env(MERCURE_JWT_SECRET)%'
|
||||||
logos_directory: '%kernel.project_dir%/public/uploads/logos'
|
logos_directory: '%kernel.project_dir%/public/uploads/logos'
|
||||||
oauth_sso_identifier: '%env(OAUTH_SSO_IDENTIFIER)%'
|
oauth_sso_identifier: '%env(OAUTH_SSO_IDENTIFIER)%'
|
||||||
|
oauth_sso_identifier_login: '%env(OAUTH_SSO_IDENTIFIER_LOGIN)%'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# default configuration for services in *this* file
|
# default configuration for services in *this* file
|
||||||
|
|
@ -36,6 +37,9 @@ services:
|
||||||
App\EventSubscriber\:
|
App\EventSubscriber\:
|
||||||
resource: '../src/EventSubscriber/'
|
resource: '../src/EventSubscriber/'
|
||||||
tags: ['kernel.event_subscriber']
|
tags: ['kernel.event_subscriber']
|
||||||
|
App\EventSubscriber\LoginSubscriber:
|
||||||
|
arguments:
|
||||||
|
$clientIdentifier: '%oauth_sso_identifier_login%'
|
||||||
App\Service\AwsService:
|
App\Service\AwsService:
|
||||||
arguments:
|
arguments:
|
||||||
$awsPublicUrl: '%aws_public_url%'
|
$awsPublicUrl: '%aws_public_url%'
|
||||||
|
|
|
||||||
|
|
@ -175,6 +175,7 @@ php bin/console league:oauth2-server:create-client sso_internal_service --grant-
|
||||||
```
|
```
|
||||||
|
|
||||||
now, copy the identifier, and paste it in the .env file
|
now, copy the identifier, and paste it in the .env file
|
||||||
|
please note that we have 2 client for the application because one is used for m2m and the other is used for the user, so implement both, the one ending with _LOGIN is the one for the user
|
||||||
```dotenv
|
```dotenv
|
||||||
OAUTH_SSO_IDENTIFIER='sso-own-identifier'
|
OAUTH_SSO_IDENTIFIER='sso-own-identifier'
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ class LoginSubscriber implements EventSubscriberInterface
|
||||||
|
|
||||||
private EntityManagerInterface $entityManager;
|
private EntityManagerInterface $entityManager;
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $entityManager)
|
public function __construct(EntityManagerInterface $entityManager,
|
||||||
|
private string $clientIdentifier)
|
||||||
{
|
{
|
||||||
$this->entityManager = $entityManager;
|
$this->entityManager = $entityManager;
|
||||||
}
|
}
|
||||||
|
|
@ -51,7 +52,7 @@ class LoginSubscriber implements EventSubscriberInterface
|
||||||
if ($user) {
|
if ($user) {
|
||||||
$user->setLastConnection(new \DateTime('now', new \DateTimeZone('Europe/Paris')));
|
$user->setLastConnection(new \DateTime('now', new \DateTimeZone('Europe/Paris')));
|
||||||
|
|
||||||
$easySolution = $this->entityManager->getRepository(Client::class)->findOneBy(['name' => 'EasySolution']);
|
$easySolution = $this->entityManager->getRepository(Client::class)->findOneBy(['identifier' => $this->clientIdentifier]);
|
||||||
if ($easySolution) {
|
if ($easySolution) {
|
||||||
$accessToken = new AccessToken(
|
$accessToken = new AccessToken(
|
||||||
identifier: bin2hex(random_bytes(40)),
|
identifier: bin2hex(random_bytes(40)),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue