1 | package dbnp.authentication |
---|
2 | |
---|
3 | import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils |
---|
4 | |
---|
5 | class 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 | } |
---|