1
2
3
4
5
6
7
8
9
10
11
12
13
14 package org.chenillekit.access.services.impl;
15
16 import java.io.IOException;
17
18 import org.apache.tapestry5.EventContext;
19 import org.apache.tapestry5.internal.EmptyEventContext;
20 import org.apache.tapestry5.ioc.services.SymbolSource;
21 import org.apache.tapestry5.services.ContextValueEncoder;
22 import org.apache.tapestry5.services.Cookies;
23 import org.apache.tapestry5.services.PageRenderRequestFilter;
24 import org.apache.tapestry5.services.PageRenderRequestHandler;
25 import org.apache.tapestry5.services.PageRenderRequestParameters;
26 import org.chenillekit.access.ChenilleKitAccessConstants;
27 import org.chenillekit.access.internal.ChenillekitAccessInternalUtils;
28 import org.chenillekit.access.services.AccessValidator;
29 import org.slf4j.Logger;
30
31
32
33
34
35 public class PageRenderAccessFilter implements PageRenderRequestFilter
36 {
37 private final Logger logger;
38 private final AccessValidator accessValidator;
39 private final String loginPage;
40 private final ContextValueEncoder valueEncoder;
41
42 private final Cookies cookies;
43
44 public PageRenderAccessFilter(AccessValidator accessValidator,
45 SymbolSource symbols, Logger logger,
46 ContextValueEncoder valueEncoder,
47 Cookies cookies)
48 {
49 this.logger = logger;
50 this.accessValidator = accessValidator;
51 this.loginPage = symbols.valueForSymbol(ChenilleKitAccessConstants.LOGIN_PAGE);
52 this.cookies = cookies;
53 this.valueEncoder = valueEncoder;
54
55 }
56
57
58
59
60
61 public void handle(PageRenderRequestParameters parameters,
62 PageRenderRequestHandler handler) throws IOException
63 {
64
65
66
67
68
69
70
71
72
73
74
75
76 if ( !accessValidator.hasAccess(parameters.getLogicalPageName(), null, null) )
77 {
78 if (logger.isDebugEnabled())
79 logger.debug("User hasn't rights to access " + parameters.getLogicalPageName() + " page");
80
81 System.out.println("User hasn't rights to access " + parameters.getLogicalPageName() + " page");
82
83 cookies.writeCookieValue(ChenilleKitAccessConstants.REQUESTED_PAGENAME_COOKIE, parameters.getLogicalPageName());
84 cookies.writeCookieValue(ChenilleKitAccessConstants.REQUESTED_EVENTCONTEXT_COOKIE, ChenillekitAccessInternalUtils.getContextAsString((parameters.getActivationContext())));
85
86 handler.handle(getLoginPageParameters());
87 }
88 else
89 {
90 System.out.println("User has rights to access " + parameters.getLogicalPageName() + " page");
91 handler.handle(parameters);
92 }
93 }
94
95 private PageRenderRequestParameters getLoginPageParameters()
96 {
97 PageRenderRequestParameters parameters = new PageRenderRequestParameters(loginPage, new EmptyEventContext());
98
99 return parameters;
100 }
101
102 }