source: trunk/grails-app/controllers/dbnp/authentication/LogoutController.groovy @ 1932

Last change on this file since 1932 was 1932, checked in by robert@…, 11 years ago

Another fix for #485

  • Property svn:keywords set to Rev Author Date
File size: 2.2 KB
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
18                // Remove all remote sessions for this user.
19                def user = authenticationService.getLoggedInUser();
20                if( user )
21                        authenticationService.deleteRemoteSessions( user );
22               
23                // Remove all queries from session
24                session.queries = [];
25        }
26
27        def remote = {
28                if( params.consumer || params.token ) {
29                        // Log out the remote user
30                        authenticationService.logOffRemotely( params.consumer, params.token )
31                }
32               
33                def returnUrl;
34               
35                // If a returnUrl is given, use it for redirect
36                if( params.returnUrl ) {
37                        returnUrl = params.returnUrl;
38                } else {
39                        returnUrl = g.createLink(controller: 'home', absolute: true)
40                }
41               
42                // Try to rest the redirect url
43                if( params[ SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter ] ) {
44                        redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl + "?spring-security-redirect=" + returnUrl?.encodeAsURL() + "&" + SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter + '=' + params[ SpringSecurityUtils.securityConfig.successHandler.targetUrlParameter ] // '/j_spring_security_logout'
45                } else {
46                        redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl + "?spring-security-redirect=" + returnUrl?.encodeAsURL() // '/j_spring_security_logout'
47                }
48
49                // Remove all remote sessions for this user.
50                def user = authenticationService.getLoggedInUser();
51                if( user )
52                        authenticationService.deleteRemoteSessions( user );
53               
54                // Remove all queries from session
55                session.queries = [];
56        }
57}
Note: See TracBrowser for help on using the repository browser.