Mercurial > dive4elements > river
annotate flys-client/src/main/java/de/intevation/flys/client/server/GGInAFilter.java @ 2955:f1030909eeb6
Check filter config in web.xml for String false to deactivate the GGInAFilter instead of "1".
flys-client/trunk@4935 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Bjoern Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Wed, 11 Jul 2012 12:34:26 +0000 |
parents | 3cacd42a0336 |
children | d7f76f197d89 |
rev | line source |
---|---|
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.client.server; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
2 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
3 import java.io.IOException; |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
4 import java.io.InputStream; |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
5 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
6 import javax.servlet.Filter; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
7 import javax.servlet.FilterChain; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
8 import javax.servlet.FilterConfig; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
9 import javax.servlet.ServletException; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
10 import javax.servlet.ServletRequest; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
11 import javax.servlet.ServletResponse; |
2893
6e4e4b96ca6c
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2889
diff
changeset
|
12 |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
13 import javax.servlet.http.HttpServletRequest; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
14 import javax.servlet.http.HttpServletResponse; |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
15 import javax.servlet.http.HttpSession; |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
16 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
17 import org.apache.log4j.Logger; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
18 |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
19 import de.intevation.flys.client.server.was.User; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
20 |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
21 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
22 /** ServletFilter used for GGInA authentification and certain authorisation. */ |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
23 public class GGInAFilter implements Filter { |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
24 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
25 /** Private logger. */ |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
26 private static Logger logger = Logger.getLogger(GGInAFilter.class); |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
27 |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
28 private boolean deactivate = false; |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
29 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
30 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
31 /** |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
32 * Initialize. |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
33 * |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
34 * Read FilterConfig parameter deactivate |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
35 */ |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
36 @Override |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
37 public void init(FilterConfig config) |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
38 throws ServletException |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
39 { |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
40 String deactivate = config.getInitParameter("deactivate"); |
2955
f1030909eeb6
Check filter config in web.xml for String false to deactivate the GGInAFilter instead of "1".
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2952
diff
changeset
|
41 if (deactivate != null && deactivate.equalsIgnoreCase("true")) { |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
42 this.deactivate = true; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
43 } |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
44 |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
45 } |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
46 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
47 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
48 /** |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
49 * Called when filter in chain invoked. |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
50 * @param req request to servlet |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
51 * @param resp response of servlet |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
52 * @param chain the filter chain |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
53 */ |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
54 @Override |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
55 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
56 throws IOException, ServletException |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
57 { |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
58 if (this.deactivate) { |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
59 logger.debug("GGinAFilter is deactivated"); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
60 chain.doFilter(req, resp); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
61 return; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
62 } |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
63 |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
64 HttpServletRequest sreq = (HttpServletRequest) req; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
65 |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
66 String requesturi = sreq.getRequestURI(); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
67 |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
68 logger.debug("Request for: " + requesturi); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
69 |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
70 // Allow access to login pages |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
71 // TODO Maybe replace with Filter <url-pattern> |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
72 if (requesturi.equals("/login.jsp") || requesturi.equals("/flys/login") |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
73 || requesturi.equals("/FLYS.css")) { |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
74 logger.debug("Request for login " + requesturi); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
75 chain.doFilter(req, resp); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
76 return; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
77 } |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
78 |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
79 HttpSession session = sreq.getSession(); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
80 |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
81 String uri = requesturi; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
82 if (sreq.getQueryString() != null) { |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
83 uri = uri + "?" + sreq.getQueryString(); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
84 } |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
85 session.setAttribute("requesturi", uri); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
86 |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
87 User user = (User)session.getAttribute("user"); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
88 if (user == null) { |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
89 logger.debug("No user in session: " + requesturi); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
90 this.redirect(resp); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
91 return; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
92 } |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
93 if (user.hasExpired()) { |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
94 logger.debug("User ticket has expired: " + requesturi); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
95 this.redirect(resp); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
96 return; |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
97 } |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
98 |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
99 logger.debug("GGInAFilter.doFilter"); |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
100 chain.doFilter(req, resp); |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
101 return; |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
102 } |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
103 |
2952
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
104 private void redirect(ServletResponse resp) throws IOException { |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
105 logger.debug("Redirect to login"); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
106 ((HttpServletResponse) resp).sendRedirect("/login.jsp"); |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
107 } |
3cacd42a0336
Filter all requests to FLYS
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
2893
diff
changeset
|
108 |
2889
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
109 |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
110 /** |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
111 * Do nothing at destruction. |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
112 */ |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
113 @Override |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
114 public void destroy() { |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
115 } |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
116 } |
6c613c9f3a51
Stub for A&A Servlet Filter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
117 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |