diff --git a/app/config/security.yml b/app/config/security.yml index 5a3f7a34..1720e741 100644 --- a/app/config/security.yml +++ b/app/config/security.yml @@ -62,7 +62,7 @@ security: logout: path: /logout - target: / + success_handler: yunohost.logout_success_handler access_control: - { path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY } diff --git a/app/config/services.yml b/app/config/services.yml index f23961c5..f266e6d1 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -43,6 +43,10 @@ services: tags: - { name: kernel.event_listener, event: security.interactive_login, method: onInteractiveLogin } + yunohost.logout_success_handler: + class: Wallabag\YunoHostBundle\Security\LogoutSuccessHandler + + yunohost.ldap: class: Symfony\Component\Ldap\LdapClient arguments: ["localhost"] diff --git a/src/Wallabag/YunoHostBundle/Security/LogoutSuccessHandler.php b/src/Wallabag/YunoHostBundle/Security/LogoutSuccessHandler.php new file mode 100644 index 00000000..b3268243 --- /dev/null +++ b/src/Wallabag/YunoHostBundle/Security/LogoutSuccessHandler.php @@ -0,0 +1,27 @@ +<?php + +namespace Wallabag\YunoHostBundle\Security; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; + +/** + * Redirects to the SSO logout URL in case of a successful logout. + * + * @see http://api.symfony.com/3.1/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.html + */ +class LogoutSuccessHandler implements LogoutSuccessHandlerInterface +{ + /** + * {@inheritdoc} + */ + public function onLogoutSuccess(Request $request) + { + // Retrieve the current SSO logout URL + $main_domain = exec('cat /etc/yunohost/current_host'); + $url = 'https://' . $main_domain . '/yunohost/sso/?action=logout'; + + return new RedirectResponse($url); + } +} -- 2.17.1