Author: fdesbois Date: 2010-05-04 16:07:47 +0200 (Tue, 04 May 2010) New Revision: 2985 Url: http://chorem.org/repositories/revision/pollen/2985 Log: Remove authentication services, use nuiton-tapestry-extra that provides these services. Removed: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AbstractAuthenticationFilter.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthentication.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationAbstract.java Modified: trunk/pollen-business/src/main/xmi/pollen.zargo trunk/pollen-ui/pom.xml trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/base/AbstractPollenPage.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/Connexion.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AppModule.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AuthenticationFilter.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationImpl.java trunk/pom.xml Modified: trunk/pollen-business/src/main/xmi/pollen.zargo =================================================================== (Binary files differ) Modified: trunk/pollen-ui/pom.xml =================================================================== --- trunk/pollen-ui/pom.xml 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/pom.xml 2010-05-04 14:07:47 UTC (rev 2985) @@ -31,6 +31,10 @@ <artifactId>tapestry-core</artifactId> </dependency> <dependency> + <groupId>org.nuiton.web</groupId> + <artifactId>nuiton-tapestry-extra</artifactId> + </dependency> + <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/base/AbstractPollenPage.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/base/AbstractPollenPage.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/base/AbstractPollenPage.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -4,7 +4,7 @@ import org.apache.tapestry5.ioc.annotations.Inject; import org.chorem.pollen.entity.UserAccount; import org.chorem.pollen.ui.components.Border; -import org.chorem.pollen.ui.services.ServiceAuthentication; +import org.nuiton.web.tapestry5.services.ServiceAuthentication; /** * AbstractPollenPage Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -41,7 +41,7 @@ import org.chorem.pollen.ui.data.AddressBar; import org.chorem.pollen.ui.pages.Index; import org.chorem.pollen.ui.services.PollenManager; -import org.chorem.pollen.ui.services.ServiceAuthentication; +import org.nuiton.web.tapestry5.services.ServiceAuthentication; import org.slf4j.Logger; /** Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/Connexion.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/Connexion.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/Connexion.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -15,7 +15,7 @@ import org.chorem.pollen.ui.components.Border; import org.chorem.pollen.ui.data.AddressBar; import org.chorem.pollen.ui.services.PollenManager; -import org.chorem.pollen.ui.services.ServiceAuthentication; +import org.nuiton.web.tapestry5.services.ServiceAuthentication; import org.slf4j.Logger; /** Deleted: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AbstractAuthenticationFilter.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AbstractAuthenticationFilter.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AbstractAuthenticationFilter.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -1,146 +0,0 @@ -package org.chorem.pollen.ui.services; - -import java.io.IOException; -import java.lang.annotation.Annotation; -import org.apache.tapestry5.Link; -import org.apache.tapestry5.runtime.Component; -import org.apache.tapestry5.services.ComponentEventRequestParameters; -import org.apache.tapestry5.services.ComponentRequestFilter; -import org.apache.tapestry5.services.ComponentRequestHandler; -import org.apache.tapestry5.services.ComponentSource; -import org.apache.tapestry5.services.PageRenderLinkSource; -import org.apache.tapestry5.services.PageRenderRequestParameters; -import org.apache.tapestry5.services.Response; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * AbstractAuthenticationFilter - * - * Created: 3 mai 2010 - * - * @param <U> type of User - * @param <A> type of Annotation that manage authentication on pages/components - * @author fdesbois - * $Id$ - */ -public abstract class AbstractAuthenticationFilter<U, A extends Annotation> - implements ComponentRequestFilter { - - private static final Logger logger = - LoggerFactory.getLogger(AbstractAuthenticationFilter.class); - - private final PageRenderLinkSource pageRender; - - private final ComponentSource componentSource; - - private final Response response; - - private final ServiceAuthentication<U> serviceAuthentication; - - protected Class<A> annotationClass; - - public AbstractAuthenticationFilter(PageRenderLinkSource renderLinkSource, - ComponentSource componentSource, Response response, - ServiceAuthentication<U> serviceAuthentication, - Class<A> annotationClass) { - this.pageRender = renderLinkSource; - this.componentSource = componentSource; - this.response = response; - this.serviceAuthentication = serviceAuthentication; - this.annotationClass = annotationClass; - - if (logger.isTraceEnabled()) { - logger.trace("Construct"); - } - } - - @Override - public void handleComponentEvent( - ComponentEventRequestParameters parameters, - ComponentRequestHandler handler) throws IOException { - - if (logger.isTraceEnabled()) { - logger.trace("handleComponentEvent"); - } - - if (redirectUnauthorizedUser(parameters.getActivePageName())) { - return; - } - - handler.handleComponentEvent(parameters); - - } - - @Override - public void handlePageRender(PageRenderRequestParameters parameters, - ComponentRequestHandler handler) throws IOException { - - if (logger.isTraceEnabled()) { - logger.trace("handlePageRender"); - } - - if (redirectUnauthorizedUser(parameters.getLogicalPageName())) { - return; - } - - handler.handlePageRender(parameters); - } - - protected boolean redirectUnauthorizedUser(String pageName) - throws IOException { - - Component page = componentSource.getPage(pageName); - - if (logger.isTraceEnabled()) { - logger.trace("Page name : " + pageName); - logger.trace("Page class : " + page.getClass()); - logger.trace("RequiresLogin annotation : " + - page.getClass().isAnnotationPresent(annotationClass)); - logger.trace("User in session : " + - serviceAuthentication.isUserConnected()); - } - - if (!page.getClass().isAnnotationPresent(annotationClass)) { - return false; - } - - AuthenticationRedirect redirectType = AuthenticationRedirect.CONNEXION; - - if (serviceAuthentication.isUserConnected()) { - U user = serviceAuthentication.getUserConnected(); - if (logger.isTraceEnabled()) { - logger.trace("User connected : " + user); - logger.trace("User allowed : " + - serviceAuthentication.isAllowed(page.getClass())); - } - - if (serviceAuthentication.isAllowed(page.getClass())) { - return false; - } - - redirectType = AuthenticationRedirect.NOT_ALLOWED; - } - - Class<?> redirectPage = getRedirectPage(redirectType); - Link link = pageRender.createPageRenderLinkWithContext(redirectPage, - pageName); - - if (logger.isTraceEnabled()) { - logger.trace("Redirection to " + redirectPage.getSimpleName() + - " page..."); - } - - response.sendRedirect(link); - - return true; - } - - protected enum AuthenticationRedirect { - CONNEXION, NOT_ALLOWED; - } - - protected abstract Class<?> getRedirectPage( - AuthenticationRedirect redirectType); -} - Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AppModule.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AppModule.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AppModule.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -41,6 +41,7 @@ import org.chorem.pollen.service.ServiceUser; import org.chorem.pollen.service.ServiceUserImpl; import org.chorem.pollen.ui.data.PollUri; +import org.nuiton.web.tapestry5.services.ServiceAuthentication; import org.slf4j.Logger; import org.slf4j.LoggerFactory; Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AuthenticationFilter.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AuthenticationFilter.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/AuthenticationFilter.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -8,7 +8,8 @@ import org.chorem.pollen.ui.data.RequiresAuthentication; import org.chorem.pollen.ui.pages.Connexion; import org.chorem.pollen.ui.pages.ErrorPage; -import org.chorem.pollen.ui.services.AbstractAuthenticationFilter.AuthenticationRedirect; +import org.nuiton.web.tapestry5.services.AbstractAuthenticationFilter; +import org.nuiton.web.tapestry5.services.ServiceAuthentication; /** * AuthenticationFilter Deleted: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthentication.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthentication.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthentication.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -1,27 +0,0 @@ - -package org.chorem.pollen.ui.services; - -import org.chorem.pollen.entity.UserAccount; - -/** - * ServiceAuthentication - * - * Created: 3 mai 2010 - * - * @param <U> user type - * @author fdesbois - * $Id$ - */ -public interface ServiceAuthentication<U> { - - boolean isUserConnected(); - - U getUserConnected(); - - void setUserConnected(U user); - - boolean isAllowed(Class<?> page); - - U getNewUserInstance(); - -} Deleted: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationAbstract.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationAbstract.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationAbstract.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -1,71 +0,0 @@ - -package org.chorem.pollen.ui.services; - -import java.lang.annotation.Annotation; -import org.apache.tapestry5.services.ApplicationStateManager; - -/** - * ServiceAuthenticationImpl - * - * Created: 3 mai 2010 - * - * @param <U> - * @param <A> - * @author fdesbois - * $Id$ - */ -public abstract class ServiceAuthenticationAbstract<U, A extends Annotation> - implements ServiceAuthentication<U> { - - private final ApplicationStateManager stateManager; - - private Class<U> userClass; - - private Class<A> annotationClass; - - public ServiceAuthenticationAbstract(ApplicationStateManager stateManager, - Class<U> userClass, Class<A> annotationClass) { - this.stateManager = stateManager; - this.userClass = userClass; - this.annotationClass = annotationClass; - } - - @Override - public boolean isUserConnected() { - return stateManager.exists(userClass); - } - - @Override - public U getUserConnected() { - return stateManager.getIfExists(userClass); - } - - @Override - public void setUserConnected(U user) { - stateManager.set(userClass, user); - } - - @Override - public boolean isAllowed(Class<?> page) { - if (page.isAnnotationPresent(annotationClass) && - isUserConnected()) { - - A check = page.getAnnotation(annotationClass); - - U user = getUserConnected(); - - return checkAuthorizations(user, check); - - // Check if user not admin is allowed -// if (!user.getAdmin() && check.adminOnly()) { -// return false; -// } -// return false; - } - // No restriction if annotation is not present - return true; - } - - protected abstract boolean checkAuthorizations(U user, A annotation); - -} Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationImpl.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationImpl.java 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/ServiceAuthenticationImpl.java 2010-05-04 14:07:47 UTC (rev 2985) @@ -5,6 +5,7 @@ import org.chorem.pollen.entity.UserAccount; import org.chorem.pollen.entity.UserAccountImpl; import org.chorem.pollen.ui.data.RequiresAuthentication; +import org.nuiton.web.tapestry5.services.ServiceAuthenticationAbstract; /** * ServiceAuthenticationImpl Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-05-04 13:22:03 UTC (rev 2984) +++ trunk/pom.xml 2010-05-04 14:07:47 UTC (rev 2985) @@ -84,6 +84,11 @@ </exclusions> </dependency> <dependency> + <groupId>org.nuiton.web</groupId> + <artifactId>nuiton-tapestry-extra</artifactId> + <version>${nuiton-web.version}</version> + </dependency> + <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.10</version> @@ -313,6 +318,7 @@ <eugene.version>2.0.2-SNAPSHOT</eugene.version> <i18n.version>1.2.2</i18n.version> <tapestry.version>5.1.0.5</tapestry.version> + <nuiton-web.version>0.1-SNAPSHOT</nuiton-web.version> <nuiton-utils.version>1.2.2</nuiton-utils.version> <processor.version>1.0.2</processor.version>