feat : Ajout expression de réecriture du subject paramétrable
This commit is contained in:
@ -5,7 +5,9 @@ namespace App\Controller;
|
||||
use App\Entity\User;
|
||||
use App\Hydra\Client;
|
||||
use App\Hydra\HydraService;
|
||||
use App\SQLLogin\SQLLoginRequest;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
@ -41,7 +43,7 @@ class MainController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/connect/login-accept', name: 'app_login_accept', methods: ['GET'])]
|
||||
public function loginAccept(Request $request): RedirectResponse
|
||||
public function loginAccept(Request $request, SQLLoginRequest $sqlLoginRequest): RedirectResponse
|
||||
{
|
||||
$user = $this->getUser();
|
||||
|
||||
@ -52,8 +54,18 @@ class MainController extends AbstractController
|
||||
if (!$challenge) {
|
||||
return new RedirectResponse($this->getParameter('issuer_url'));
|
||||
}
|
||||
|
||||
$subject = $user->getLogin();
|
||||
|
||||
$subjectRewriteExpression = $sqlLoginRequest->getSubjectRewriteExpression();
|
||||
if (null != $subjectRewriteExpression) {
|
||||
$expressionLanguage = new ExpressionLanguage();
|
||||
|
||||
$subject = $expressionLanguage->evaluate($subjectRewriteExpression, $user->getAttributes());
|
||||
}
|
||||
|
||||
$loginAcceptRes = $this->client->acceptLoginRequest($challenge, [
|
||||
'subject' => $user->getLogin(),
|
||||
'subject' => $subject,
|
||||
'remember' => true,
|
||||
])->toArray();
|
||||
|
||||
|
@ -19,6 +19,7 @@ class SQLLoginConfiguration implements ConfigurationInterface
|
||||
->arrayNode(SQLLoginRequest::DATA_TO_FETCH)
|
||||
->scalarPrototype()->end()
|
||||
->end()
|
||||
->scalarNode(SQLLoginRequest::SUBJECT_REWRITE_EXPRESSION)->defaultNull()->end()
|
||||
->end();
|
||||
|
||||
return $treeBuilder;
|
||||
|
@ -12,6 +12,7 @@ class SQLLoginRequest
|
||||
public const PASSWORD_COLUMN_NAME = 'password_column_name';
|
||||
public const PASSWORD_NEED_UPGRADE = 'password_need_upgrade';
|
||||
public const TABLE_NAME = 'table_name';
|
||||
public const SUBJECT_REWRITE_EXPRESSION = 'subject_rewrite_expression';
|
||||
|
||||
protected array $config;
|
||||
protected string $dsn;
|
||||
@ -66,6 +67,11 @@ class SQLLoginRequest
|
||||
return $this->config[self::DATA_TO_FETCH];
|
||||
}
|
||||
|
||||
public function getSubjectRewriteExpression(): ?string
|
||||
{
|
||||
return $this->config[self::SUBJECT_REWRITE_EXPRESSION];
|
||||
}
|
||||
|
||||
public function getRequestScope()
|
||||
{
|
||||
$scope = '';
|
||||
|
Reference in New Issue
Block a user