Loading CHANGELOG.md +4 −0 Original line number Diff line number Diff line CHANGELOG ========= 3.2.2 ----- - L'URL de connexion accepte désormais role=ROLE_ID pour sélectionner automatiquement ce rôle une fois authentifié. 3.2.1 ----- - Modifications/améliorations pour faciliter le support d'autres modes d'authentification (ex: unicaen/auth-token). Loading src/UnicaenAuth/Controller/AuthController.php +19 −3 Original line number Diff line number Diff line Loading @@ -9,10 +9,12 @@ use UnicaenApp\Exception\RuntimeException; use UnicaenAuth\Authentication\Adapter\Cas; use UnicaenAuth\Authentication\Adapter\LocalAdapter; use UnicaenAuth\Authentication\Adapter\Shib; use UnicaenAuth\Entity\Db\Role; use UnicaenAuth\Form\LoginForm; use UnicaenAuth\Options\Traits\ModuleOptionsAwareTrait; use UnicaenAuth\Service\ShibService; use UnicaenAuth\Service\Traits\ShibServiceAwareTrait; use UnicaenAuth\Service\Traits\UserContextServiceAwareTrait; use UnicaenAuth\Service\Traits\UserServiceAwareTrait; use Zend\Http\Request; use Zend\Http\Response; Loading Loading @@ -43,6 +45,7 @@ class AuthController extends AbstractActionController use ShibServiceAwareTrait; use UserServiceAwareTrait; use UserContextServiceAwareTrait; use ModuleOptionsAwareTrait; /** Loading Loading @@ -131,8 +134,12 @@ class AuthController extends AbstractActionController } $redirect = $this->getRequestedRedirect(); $queryParams = ['query' => ($redirect ? ['redirect' => $redirect] : [])]; $url = $this->url()->fromRoute(null, [], $queryParams, true); $roleId = $this->params()->fromPost('role', $this->params()->fromQuery('role', false)); $queryParams = array_filter([ 'redirect' => $redirect ?: null, 'role' => $roleId ?: null, ]); $url = $this->url()->fromRoute(null, [], ['query' => $queryParams], true); $form->setAttribute('action', $url); if (!$request->isPost()) { Loading Loading @@ -232,6 +239,7 @@ class AuthController extends AbstractActionController $type = $this->params('type'); $adapter = $this->zfcUserAuthentication()->getAuthAdapter(); $redirect = $this->params()->fromPost('redirect', $this->params()->fromQuery('redirect', false)); $roleId = $this->params()->fromPost('role', $this->params()->fromQuery('role', false)); $request = $this->getRequest(); $request->getPost()->set('type', $type); Loading @@ -244,11 +252,19 @@ class AuthController extends AbstractActionController $auth = $this->zfcUserAuthentication()->getAuthService()->authenticate($adapter); if ($roleId) { $this->serviceUserContext->setNextSelectedIdentityRole($roleId); } if (!$auth->isValid()) { $message = $auth->getMessages()[0] ?? $this->failedLoginMessage; $this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($message); $adapter->resetAdapters(); $url = $this->url()->fromRoute(null, [], ['query' => $redirect ? ['redirect' => $redirect] : []], true); $queryParams = array_filter([ 'redirect' => $redirect ?: null, 'role' => $roleId ?: null, ]); $url = $this->url()->fromRoute(null, [], ['query' => $queryParams], true); return $this->redirect()->toUrl($url); } Loading src/UnicaenAuth/Controller/AuthControllerFactory.php +5 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use UnicaenAuth\Form\LoginForm; use UnicaenAuth\Options\ModuleOptions; use UnicaenAuth\Service\ShibService; use UnicaenAuth\Service\User as UserService; use UnicaenAuth\Service\UserContext; use ZfcUser\Controller\RedirectCallback; class AuthControllerFactory Loading @@ -23,6 +24,9 @@ class AuthControllerFactory /* @var $userService UserService */ $userService = $container->get('unicaen-auth_user_service'); /* @var $userContextService UserContext */ $userContextService = $container->get(UserContext::class); /** @var ModuleOptions $moduleOptions */ $moduleOptions = $container->get('unicaen-auth_module_options'); Loading @@ -32,6 +36,7 @@ class AuthControllerFactory $controller = new AuthController(); $controller->setShibService($shibService); $controller->setUserService($userService); $controller->setServiceUserContext($userContextService); $controller->setModuleOptions($moduleOptions); $controller->setRedirectCallback($redirectCallback); Loading src/UnicaenAuth/Service/UserContext.php +5 −4 Original line number Diff line number Diff line Loading @@ -379,7 +379,7 @@ class UserContext extends AbstractService implements EventManagerAwareInterface * * NB: seul l'id du rôle est mémorisé en session ; la durée de vie du stockage est de 1 requête seulement. * * @param RoleInterface|string $role * @param RoleInterface|string $role Le ROLE_ID du rôle (string) ou une instance (RoleInterface) * * @return \UnicaenAuth\Service\UserContext */ Loading @@ -396,12 +396,13 @@ class UserContext extends AbstractService implements EventManagerAwareInterface unset($this->getSessionContainer()->nextSelectedIdentityRole); } $role = $this->getSelectableIdentityRoles()[$role]; $role = $this->getSelectableIdentityRoles()[$role] ?? null; if ($role instanceof AbstractRole) { $this->saveUserLastRole($role); } if ($role) { $this->triggerUserRoleSelectedEvent(UserRoleSelectedEvent::POST_SELECTION, $role); } return $this; } Loading Loading
CHANGELOG.md +4 −0 Original line number Diff line number Diff line CHANGELOG ========= 3.2.2 ----- - L'URL de connexion accepte désormais role=ROLE_ID pour sélectionner automatiquement ce rôle une fois authentifié. 3.2.1 ----- - Modifications/améliorations pour faciliter le support d'autres modes d'authentification (ex: unicaen/auth-token). Loading
src/UnicaenAuth/Controller/AuthController.php +19 −3 Original line number Diff line number Diff line Loading @@ -9,10 +9,12 @@ use UnicaenApp\Exception\RuntimeException; use UnicaenAuth\Authentication\Adapter\Cas; use UnicaenAuth\Authentication\Adapter\LocalAdapter; use UnicaenAuth\Authentication\Adapter\Shib; use UnicaenAuth\Entity\Db\Role; use UnicaenAuth\Form\LoginForm; use UnicaenAuth\Options\Traits\ModuleOptionsAwareTrait; use UnicaenAuth\Service\ShibService; use UnicaenAuth\Service\Traits\ShibServiceAwareTrait; use UnicaenAuth\Service\Traits\UserContextServiceAwareTrait; use UnicaenAuth\Service\Traits\UserServiceAwareTrait; use Zend\Http\Request; use Zend\Http\Response; Loading Loading @@ -43,6 +45,7 @@ class AuthController extends AbstractActionController use ShibServiceAwareTrait; use UserServiceAwareTrait; use UserContextServiceAwareTrait; use ModuleOptionsAwareTrait; /** Loading Loading @@ -131,8 +134,12 @@ class AuthController extends AbstractActionController } $redirect = $this->getRequestedRedirect(); $queryParams = ['query' => ($redirect ? ['redirect' => $redirect] : [])]; $url = $this->url()->fromRoute(null, [], $queryParams, true); $roleId = $this->params()->fromPost('role', $this->params()->fromQuery('role', false)); $queryParams = array_filter([ 'redirect' => $redirect ?: null, 'role' => $roleId ?: null, ]); $url = $this->url()->fromRoute(null, [], ['query' => $queryParams], true); $form->setAttribute('action', $url); if (!$request->isPost()) { Loading Loading @@ -232,6 +239,7 @@ class AuthController extends AbstractActionController $type = $this->params('type'); $adapter = $this->zfcUserAuthentication()->getAuthAdapter(); $redirect = $this->params()->fromPost('redirect', $this->params()->fromQuery('redirect', false)); $roleId = $this->params()->fromPost('role', $this->params()->fromQuery('role', false)); $request = $this->getRequest(); $request->getPost()->set('type', $type); Loading @@ -244,11 +252,19 @@ class AuthController extends AbstractActionController $auth = $this->zfcUserAuthentication()->getAuthService()->authenticate($adapter); if ($roleId) { $this->serviceUserContext->setNextSelectedIdentityRole($roleId); } if (!$auth->isValid()) { $message = $auth->getMessages()[0] ?? $this->failedLoginMessage; $this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($message); $adapter->resetAdapters(); $url = $this->url()->fromRoute(null, [], ['query' => $redirect ? ['redirect' => $redirect] : []], true); $queryParams = array_filter([ 'redirect' => $redirect ?: null, 'role' => $roleId ?: null, ]); $url = $this->url()->fromRoute(null, [], ['query' => $queryParams], true); return $this->redirect()->toUrl($url); } Loading
src/UnicaenAuth/Controller/AuthControllerFactory.php +5 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use UnicaenAuth\Form\LoginForm; use UnicaenAuth\Options\ModuleOptions; use UnicaenAuth\Service\ShibService; use UnicaenAuth\Service\User as UserService; use UnicaenAuth\Service\UserContext; use ZfcUser\Controller\RedirectCallback; class AuthControllerFactory Loading @@ -23,6 +24,9 @@ class AuthControllerFactory /* @var $userService UserService */ $userService = $container->get('unicaen-auth_user_service'); /* @var $userContextService UserContext */ $userContextService = $container->get(UserContext::class); /** @var ModuleOptions $moduleOptions */ $moduleOptions = $container->get('unicaen-auth_module_options'); Loading @@ -32,6 +36,7 @@ class AuthControllerFactory $controller = new AuthController(); $controller->setShibService($shibService); $controller->setUserService($userService); $controller->setServiceUserContext($userContextService); $controller->setModuleOptions($moduleOptions); $controller->setRedirectCallback($redirectCallback); Loading
src/UnicaenAuth/Service/UserContext.php +5 −4 Original line number Diff line number Diff line Loading @@ -379,7 +379,7 @@ class UserContext extends AbstractService implements EventManagerAwareInterface * * NB: seul l'id du rôle est mémorisé en session ; la durée de vie du stockage est de 1 requête seulement. * * @param RoleInterface|string $role * @param RoleInterface|string $role Le ROLE_ID du rôle (string) ou une instance (RoleInterface) * * @return \UnicaenAuth\Service\UserContext */ Loading @@ -396,12 +396,13 @@ class UserContext extends AbstractService implements EventManagerAwareInterface unset($this->getSessionContainer()->nextSelectedIdentityRole); } $role = $this->getSelectableIdentityRoles()[$role]; $role = $this->getSelectableIdentityRoles()[$role] ?? null; if ($role instanceof AbstractRole) { $this->saveUserLastRole($role); } if ($role) { $this->triggerUserRoleSelectedEvent(UserRoleSelectedEvent::POST_SELECTION, $role); } return $this; } Loading