r3202 - in branches/pollen-1.2.6-struts2: . pollen-ui-struts2 pollen-ui-struts2/src/main/java/org/chorem/pollen/ui pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions pollen-ui-struts2/src/main/resources pollen-ui-struts2/src/main/webapp/WEB-INF
Author: bleny Date: 2012-03-23 09:56:10 +0100 (Fri, 23 Mar 2012) New Revision: 3202 Url: http://chorem.org/repositories/revision/pollen/3202 Log: mise en place de shiro sur pollen-struts (pom, web.xml, shiro.ini, filtre d'admin) : fonctionne mais on est redirig?\195?\169 vers login.jsp Added: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenShiroFilter.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/shiro.ini Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/pom.xml branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/log4j.properties branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/struts.xml branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/web.xml branches/pollen-1.2.6-struts2/pom.xml Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/pom.xml =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/pom.xml 2012-03-22 15:13:57 UTC (rev 3201) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/pom.xml 2012-03-23 08:56:10 UTC (rev 3202) @@ -128,6 +128,11 @@ <artifactId>jetty-runner</artifactId> </dependency> + <dependency> + <groupId>org.apache.shiro</groupId> + <artifactId>shiro-web</artifactId> + </dependency> + <!-- Provided dependencies --> <dependency> <groupId>javax.servlet</groupId> Added: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenShiroFilter.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenShiroFilter.java (rev 0) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenShiroFilter.java 2012-03-23 08:56:10 UTC (rev 3202) @@ -0,0 +1,37 @@ +package org.chorem.pollen.ui; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.shiro.web.filter.authz.AuthorizationFilter; +import org.chorem.pollen.business.persistence.UserAccount; +import org.chorem.pollen.ui.actions.PollenActionSupport; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public class PollenShiroFilter extends AuthorizationFilter { + + private static final Log log = LogFactory.getLog(PollenShiroFilter.class); + + @Override + protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object mappedValue) { + + PollenSession pollenSession = PollenActionSupport.getPollenSession(servletRequest); + + UserAccount userAccount = pollenSession.getUserAccount(); + + boolean isAccessAllowed = userAccount != null && userAccount.isAdministrator(); + + if (log.isDebugEnabled()) { + if (isAccessAllowed) { + log.debug("granting access to an admin-reserved page"); + } else { + log.debug("illegal access to an admin-reserved page, user will be sent to " + getUnauthorizedUrl()); + } + } + + return isAccessAllowed; + + } + +} Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java 2012-03-22 15:13:57 UTC (rev 3201) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java 2012-03-23 08:56:10 UTC (rev 3202) @@ -41,7 +41,9 @@ import org.nuiton.web.filter.TopiaTransactionFilter; import org.nuiton.web.struts2.BaseAction; +import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import java.net.URL; import java.text.DateFormat; import java.text.ParseException; @@ -109,6 +111,16 @@ return "Index"; } + public static PollenSession getPollenSession(ServletRequest servletRequest) { + HttpSession httpSession = ((HttpServletRequest) servletRequest).getSession(true); + PollenSession pollenSession = (PollenSession) httpSession.getAttribute(SESSION_PARAMETER); + if (pollenSession == null) { + pollenSession = new PollenSession(); + httpSession.setAttribute(SESSION_PARAMETER, pollenSession); + } + return pollenSession; + } + public PollenSession getPollenSession() { if (pollenSession == null) { Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/log4j.properties =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/log4j.properties 2012-03-22 15:13:57 UTC (rev 3201) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/log4j.properties 2012-03-23 08:56:10 UTC (rev 3202) @@ -28,4 +28,5 @@ log4j.appender.console.layout.ConversionPattern=%d [%p] %c %m%n log4j.logger.org.chorem.pollen=INFO +log4j.logger.org.chorem.pollen.ui.PollenShiroFilter=DEBUG log4j.logger.org.nuiton=INFO Added: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/shiro.ini =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/shiro.ini (rev 0) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/shiro.ini 2012-03-23 08:56:10 UTC (rev 3202) @@ -0,0 +1,8 @@ +[main] + +pollenFilter=org.chorem.pollen.ui.PollenShiroFilter +pollenFilter.unauthorizedUrl=bordel.jsp + +[urls] + +/admin/**=pollenFilter Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/struts.xml =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/struts.xml 2012-03-22 15:13:57 UTC (rev 3201) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/struts.xml 2012-03-23 08:56:10 UTC (rev 3202) @@ -67,16 +67,16 @@ <interceptor name="pollenFileUpload" class="org.chorem.pollen.ui.interceptors.PollenFileUploadInterceptor"/> - <interceptor name="checkUserLoggued" - class="org.chorem.pollen.ui.interceptors.CheckUserIsLogguedInterceptor"> - <param name="loginAction">/notLoggued</param> - <param name="redirectAction">/home</param> - </interceptor> + <!--<interceptor name="checkUserLoggued"--> + <!--class="org.chorem.pollen.ui.interceptors.CheckUserIsLogguedInterceptor">--> + <!--<param name="loginAction">/notLoggued</param>--> + <!--<param name="redirectAction">/home</param>--> + <!--</interceptor>--> - <interceptor name="checkUserAdmin" - class="org.chorem.pollen.ui.interceptors.CheckUserIsAdmin"> - <param name="redirectAction">/notAdmin</param> - </interceptor> + <!--<interceptor name="checkUserAdmin"--> + <!--class="org.chorem.pollen.ui.interceptors.CheckUserIsAdmin">--> + <!--<param name="redirectAction">/notAdmin</param>--> + <!--</interceptor>--> <!-- basic stack --> <interceptor-stack name="pollenBasicStack"> @@ -88,13 +88,13 @@ </interceptor-stack> <interceptor-stack name="pollenBasicLogguedStack"> - <interceptor-ref name="checkUserLoggued"/> + <!--<interceptor-ref name="checkUserLoggued"/>--> <interceptor-ref name="pollenBasicStack"/> </interceptor-stack> <interceptor-stack name="pollenBasicAdminStack"> - <interceptor-ref name="checkUserLoggued"/> - <interceptor-ref name="checkUserAdmin"/> + <!-- interceptor-ref name="checkUserLoggued" /> + <interceptor-ref name="checkUserAdmin"/ --> <interceptor-ref name="pollenBasicStack"/> </interceptor-stack> @@ -135,13 +135,13 @@ </interceptor-stack> <interceptor-stack name="pollenParamsPrepareParamsLogguedStack"> - <interceptor-ref name="checkUserLoggued"/> + <!--<interceptor-ref name="checkUserLoggued"/>--> <interceptor-ref name="pollenParamsPrepareParamsStack"/> </interceptor-stack> <interceptor-stack name="pollenParamsPrepareParamsAdminStack"> - <interceptor-ref name="checkUserLoggued"/> - <interceptor-ref name="checkUserAdmin"/> + <!--<interceptor-ref name="checkUserLoggued"/>--> + <!--<interceptor-ref name="checkUserAdmin"/>--> <interceptor-ref name="pollenParamsPrepareParamsStack"/> </interceptor-stack> Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/web.xml =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/web.xml 2012-03-22 15:13:57 UTC (rev 3201) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/web.xml 2012-03-23 08:56:10 UTC (rev 3202) @@ -29,6 +29,7 @@ <display-name>Pollen</display-name> + <filter> <filter-name>topiaTransaction</filter-name> <filter-class>org.chorem.pollen.ui.PollenTopiaTransactionFilter</filter-class> @@ -40,6 +41,10 @@ org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter </filter-class> </filter> + <filter> + <filter-name>ShiroFilter</filter-name> + <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> + </filter> <filter> <filter-name>sitemesh</filter-name> @@ -59,6 +64,15 @@ </filter-mapping> <filter-mapping> + <filter-name>ShiroFilter</filter-name> + <url-pattern>/*</url-pattern> + <dispatcher>REQUEST</dispatcher> + <dispatcher>FORWARD</dispatcher> + <dispatcher>INCLUDE</dispatcher> + <dispatcher>ERROR</dispatcher> + </filter-mapping> + + <filter-mapping> <filter-name>struts-prepare</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> @@ -78,6 +92,11 @@ <listener-class>org.chorem.pollen.ui.PollenApplicationListener</listener-class> </listener> + <listener> + <description>Shiro security layer</description> + <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> + </listener> + <welcome-file-list> <welcome-file>/</welcome-file> <welcome-file>index.jsp</welcome-file> Modified: branches/pollen-1.2.6-struts2/pom.xml =================================================================== --- branches/pollen-1.2.6-struts2/pom.xml 2012-03-22 15:13:57 UTC (rev 3201) +++ branches/pollen-1.2.6-struts2/pom.xml 2012-03-23 08:56:10 UTC (rev 3202) @@ -146,6 +146,18 @@ <scope>runtime</scope> </dependency> + <dependency> + <groupId>org.apache.shiro</groupId> + <artifactId>shiro-core</artifactId> + <version>${shiroVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.shiro</groupId> + <artifactId>shiro-web</artifactId> + <version>${shiroVersion}</version> + </dependency> + + <!-- Tapestry --> <dependency> <groupId>org.apache.tapestry</groupId> @@ -445,6 +457,7 @@ <postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion> <struts2Version>2.3.1.2</struts2Version> <jqueryPluginVersion>3.2.1</jqueryPluginVersion> + <shiroVersion>1.2.0</shiroVersion> <slf4jVersion>1.6.4</slf4jVersion> <jettyVersion>${jettyPluginVersion}</jettyVersion>
participants (1)
-
bleny@users.chorem.org