View Javadoc

1   /*
2    * Apache License
3    * Version 2.0, January 2004
4    * http://www.apache.org/licenses/
5    *
6    * Copyright 2008 by chenillekit.org
7    *
8    * Licensed under the Apache License, Version 2.0 (the "License");
9    * you may not use this file except in compliance with the License.
10   * You may obtain a copy of the License at
11   *
12   * http://www.apache.org/licenses/LICENSE-2.0
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   * @version $Id: PageRenderAccessFilter.java 380 2008-12-30 10:21:52Z mlusetti $
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  	 * (non-Javadoc)
59  	 * @see org.apache.tapestry5.services.PageRenderRequestFilter#handle(org.apache.tapestry5.services.PageRenderRequestParameters, org.apache.tapestry5.services.PageRenderRequestHandler)
60  	 */
61  	public void handle(PageRenderRequestParameters parameters,
62  			PageRenderRequestHandler handler) throws IOException
63  	{
64  //		String previousPage = cookies.readCookieValue(ChenilleKitAccessConstants.REQUESTED_PAGENAME_COOKIE);
65  //		String previousContext = cookies.readCookieValue(ChenilleKitAccessConstants.REQUESTED_EVENTCONTEXT_COOKIE);
66  //
67  //		if (previousPage != null)
68  //		{
69  //			EventContext context = ChenillekitAccessInternalUtils.getContextFromString(valueEncoder, previousContext);
70  //			currentParameters = new PageRenderRequestParameters(previousPage, context);
71  //
72  //			cookies.removeCookieValue(ChenilleKitAccessConstants.REQUESTED_EVENTCONTEXT_COOKIE);
73  //			cookies.removeCookieValue(ChenilleKitAccessConstants.REQUESTED_PAGENAME_COOKIE);
74  //		}
75  //		else if ( !accessValidator.hasAccess(parameters.getLogicalPageName(), null, null) )
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 }