root/trunk/grails-app/controllers/dbnp/authentication/LogoutController.groovy @ 1816

Revision 1816, 2.0 KB (checked in by robert@…, 3 years ago)

Added 'returnUrl' parameter to /logout/remote to redirect the user after logging out. See #429

  • Property svn:keywords set to Rev Author Date
Line 
1package dbnp.authentication
2
3import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils
4
5class LogoutController {
6        def authenticationService
7       
8        /**
9         * Index action. Redirects to the Spring security logout uri.
10         */
11        def index = {
12                if( params[ SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter ] ) {
13                        redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl + "?" + SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter + '=' + params[ SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter ] // '/j_spring_security_logout'
14                } else {
15                        redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl // '/j_spring_security_logout'
16                }
17                // TODO  put any pre-logout code here
18               
19                // Remove all queries from session
20                session.queries = [];
21        }
22
23        def remote = {
24                if( params.consumer || params.token ) {
25                        // Log out the remote user
26                        authenticationService.logOffRemotely( params.consumer, params.token )
27                }
28               
29                def returnUrl;
30               
31                // If a returnUrl is given, use it for redirect
32                if( params.returnUrl ) {
33                        returnUrl = params.returnUrl;
34                } else {
35                        returnUrl = g.createLink(controller: 'home', absolute: true)
36                }
37               
38                println "REDIRECT: " + returnUrl;
39                println "parameters: " + params
40               
41                // Try to rest the redirect url
42                if( params[ SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter ] ) {
43                        redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl + "?spring-security-redirect=" + returnUrl?.encodeAsURL() + "&" + SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter + '=' + params[ SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter ] // '/j_spring_security_logout'
44                } else {
45                        redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl + "?spring-security-redirect=" + returnUrl?.encodeAsURL() // '/j_spring_security_logout'
46                }
47
48                // Remove all queries from session
49                session.queries = [];
50        }
51}
Note: See TracBrowser for help on using the browser.