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

Last change on this file since 1699 was 1627, checked in by work@…, 12 years ago
  • deny all access to /query except in development
  • Property svn:keywords set to Rev Author Date
File size: 2.4 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: 1627 $
13 * $Author: j.saito@maastrichtuniversity.nl $
14 * $Date: 2011-03-11 13:14:29 +0000 (vr, 11 mrt 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                                        session.style = 'default_style'
29                                }
30
31                                // set session lifetime to 1 week
32                                session.setMaxInactiveInterval(604800)
33                        }
34                }
35
36                // we need secUser in GDT::Template*, but we do not want GDT
37                // to rely on authentication. Therefore we handle it through
38                // a filter and store the loggedInUser in the session instead
39                templateEditor(controller: 'templateEditor', action: '*') {
40                        // before every execution
41                        before = {
42                                // set the secUser in the session
43                                def secUser = authenticationService.getLoggedInUser()
44                                if (secUser) {
45                                        session.loggedInUser = secUser
46                                } else {
47                                        // remove session variable
48                                        session.removeAttribute('loggedInUser')
49
50                                        def returnURI = request.requestURL.toString().replace(".dispatch","").replace("/grails/","/") + '?' + request.queryString
51
52                                        // and redirect to login page
53                                        redirect(controller: 'login', action: 'auth', params: [returnURI: returnURI, referer: request.getHeader('referer')] )
54                                }
55                        }
56                }
57
58                // disable all access to the query controller as this allows
59                // full access to the database
60                query(controller: 'query', action: '*') {
61                        // before every execution
62                        before = {
63                                // only allow development
64                                if (grails.util.GrailsUtil.environment != GrailsApplication.ENV_DEVELOPMENT) {
65                                        redirect(controller: 'home')
66                                }
67                        }
68                }
69               
70                profiler(controller: '*', action: '*') {
71                        before = {
72                                request._timeBeforeRequest = System.currentTimeMillis()
73                        }
74
75                        after = {
76                                request._timeAfterRequest = System.currentTimeMillis()
77                        }
78
79                        afterView = {
80                                def actionDuration = request._timeAfterRequest ? request._timeAfterRequest - request._timeBeforeRequest : 0
81                                def viewDuration = request._timeAfterRequest ? System.currentTimeMillis() - request._timeAfterRequest : 0
82                                log.info("Timer: ${controllerName}(${actionDuration}ms)::${actionName}(${viewDuration}ms)")
83                        }
84                }
85
86        }
87}
88
Note: See TracBrowser for help on using the repository browser.