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.EventConstants;
19 import org.apache.tapestry5.internal.EmptyEventContext;
20 import org.apache.tapestry5.ioc.services.SymbolSource;
21 import org.apache.tapestry5.services.ComponentEventRequestFilter;
22 import org.apache.tapestry5.services.ComponentEventRequestHandler;
23 import org.apache.tapestry5.services.ComponentEventRequestParameters;
24 import org.chenillekit.access.ChenilleKitAccessConstants;
25 import org.chenillekit.access.services.AccessValidator;
26
27
28
29
30
31 public class ComponentEventAccessFilter implements ComponentEventRequestFilter
32 {
33 private final AccessValidator accessValidator;
34 private final String loginPage;
35
36 public ComponentEventAccessFilter(AccessValidator accessValidator, SymbolSource symbols)
37 {
38 this.accessValidator = accessValidator;
39 this.loginPage = symbols.valueForSymbol(ChenilleKitAccessConstants.LOGIN_PAGE);
40 }
41
42 public void handle(ComponentEventRequestParameters parameters,
43 ComponentEventRequestHandler handler) throws IOException
44 {
45 if (accessValidator.hasAccess(parameters.getActivePageName(), parameters.getNestedComponentId(), parameters.getEventType()))
46 handler.handle(parameters);
47 else
48 handler.handle(getLoginComponentParameters());
49
50 }
51
52 private ComponentEventRequestParameters getLoginComponentParameters()
53 {
54 ComponentEventRequestParameters parameters = new ComponentEventRequestParameters(loginPage, loginPage,
55 "", EventConstants.ACTIVATE, new EmptyEventContext(),new EmptyEventContext());
56
57
58 return parameters;
59 }
60
61 }