feat : Ajout expression de réecriture du subject paramétrable
Some checks reported warnings
Cadoles/hydra-sql/pipeline/head This commit is unstable
Cadoles/hydra-sql/pipeline/pr-develop This commit is unstable

This commit is contained in:
2024-07-24 16:41:22 +02:00
parent 769e7ed59e
commit daa5eaaa63
8 changed files with 447 additions and 356 deletions

View File

@ -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();

View File

@ -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;

View File

@ -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 = '';