source: trunk/grails-app/conf/BaseFilters.groovy @ 1921

Last change on this file since 1921 was 1921, checked in by t.w.abma@…, 12 years ago
  • added filter to BaseFilters?
  • added security annotation to all controllers where needed (except for Home, (Advanced) Search and Publications)
  • added tags to top navigation menus showing only menu(items) dependent on whether a user is logged in or not
  • Property svn:keywords set to Rev Author Date
File size: 2.9 KB
Line 
1/**
2 * Base Filters
3 * @Author Jeroen Wesbeek
4 * @Since 20091026
5 * @see main.gsp
6 * @see http://grails.org/Filters
7 * @Description
8 *
9 * These filters contain generic logic for -every- page request.
10 *
11 * Revision information:
12 * $Rev: 1921 $
13 * $Author: t.w.abma@umcutrecht.nl $
14 * $Date: 2011-06-09 10:48:15 +0000 (do, 09 jun 2011) $
15 */
16import org.codehaus.groovy.grails.commons.GrailsApplication
17
18class BaseFilters {
19        def authenticationService
20
21        // define filters
22        def filters = {
23                defineStyle(controller: '*', action: '*') {
24                        // before every execution
25                        before = {
26                                // set the default style in the session
27                                if (!session.style) {
28                                        def hostname = InetAddress.getLocalHost().getHostName()
29                                        if (hostname =~ 'nmcdsp.org') {
30                                                session.style = 'nmcdsp_style'
31                                        } else if (hostname =~ 'nbx') {
32                                                session.style = 'dbnp_style'
33                                        } else {
34                                                session.style = 'default_style'
35                                        }
36                                }
37
38                                // set session lifetime to 1 week
39                                session.setMaxInactiveInterval(604800)
40                        }
41                }
42
43                // we need secUser in GDT::Template*, but we do not want GDT
44                // to rely on authentication. Therefore we handle it through
45                // a filter and store the loggedInUser in the session instead
46                templateEditor(controller: 'templateEditor', action: '*') {
47                        // before every execution
48                        before = {
49                                // set the secUser in the session
50                                def secUser = authenticationService.getLoggedInUser()
51                                if (secUser) {
52                                        session.loggedInUser = secUser
53                                } else {
54                                        // remove session variable
55                                        session.removeAttribute('loggedInUser')
56
57                                        def returnURI = request.requestURL.toString().replace(".dispatch","").replace("/grails/","/") + '?' + request.queryString
58
59                                        // and redirect to login page
60                                        redirect(controller: 'login', action: 'auth', params: [returnURI: returnURI, referer: request.getHeader('referer')] )
61                                }
62                        }
63                }
64
65                // disable all access to the query controller as this allows
66                // full access to the database
67                query(controller: 'query', action: '*') {
68                        // before every execution
69                        before = {
70                                // only allow development
71                                if (grails.util.GrailsUtil.environment != GrailsApplication.ENV_DEVELOPMENT) {
72                                        redirect(controller: 'home')
73                                }
74                        }
75                }
76               
77                profiler(controller: '*', action: '*') {
78                        before = {
79                                request._timeBeforeRequest = System.currentTimeMillis()
80                        }
81
82                        after = {
83                                request._timeAfterRequest = System.currentTimeMillis()
84                        }
85
86                        afterView = {
87                                def actionDuration = request._timeAfterRequest ? request._timeAfterRequest - request._timeBeforeRequest : 0
88                                def viewDuration = request._timeAfterRequest ? System.currentTimeMillis() - request._timeAfterRequest : 0
89                                log.info("Timer: ${controllerName}(${actionDuration}ms)::${actionName}(${viewDuration}ms)")
90                        }
91                }
92
93        // Mapping filter for the gdtImporter-plugin
94        gdtImporter(controller:'gdtImporter', action:'*') {
95             before = {
96                if(!authenticationService.getLoggedInUser()) {
97                      redirect(controller:'home')
98                    return false
99                }
100             }
101
102        }
103
104        }
105}
106
Note: See TracBrowser for help on using the repository browser.