Author: bpoussin Date: 2011-04-29 23:02:55 +0200 (Fri, 29 Apr 2011) New Revision: 276 Url: http://chorem.org/repositories/revision/bow/276 Log: ca remarche a peu pres, il reste des petites choses il faut penser a mettre a jour ses url bookmarke et son opensearch (en gros avant: ?action=quelqueChose&, maintenant: quelqueChose.action?) le Token permanent a sans doute aussi chang?\195?\169 suite a la migration Added: trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LogoutInterceptor.java Removed: trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/HomeAction.java trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java trunk/bow-ui/src/main/resources/struts.xml trunk/pom.xml Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/HomeAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/HomeAction.java 2011-04-28 15:26:48 UTC (rev 275) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/HomeAction.java 2011-04-29 21:02:55 UTC (rev 276) @@ -56,7 +56,7 @@ @Override public void setServletRequest(HttpServletRequest request) { - this.request = request; + this.request = request; } /** @@ -65,12 +65,12 @@ public String execute() { try { BowPreference user = getBowSession().getPreference(); - + BowInit.initHomePage(request, user); } catch (Exception e) { addActionError(getText(n_("bow.error.internal"))); log.error(e.getMessage(), e); } - return SUCCESS; + return SUCCESS; } } \ No newline at end of file Deleted: trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java 2011-04-28 15:26:48 UTC (rev 275) +++ trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java 2011-04-29 21:02:55 UTC (rev 276) @@ -1,67 +0,0 @@ -/* - * #%L - * bow - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 - 2011 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package org.chorem.bow.interceptor; - -import java.util.Map; - -import org.apache.struts2.ServletActionContext; -import org.chorem.bow.BowUser; - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import org.chorem.bow.BowSession; - -/** - * Interceptor used to redirect a logged user if he tries to access a page on - * which you mustn't be logged (example : login / register page) - */ -public class AldyLoggedInterceptor extends AbstractInterceptor { - private static final long serialVersionUID = -2411549996072421471L; - protected String redirect; - - /** - * @param redirect the redirect to set - */ - public void setRedirect(String redirect) { - this.redirect = redirect; - } - - @Override - public String intercept(ActionInvocation invocation) throws Exception { - Map<String, Object> session = ActionContext.getContext().getSession(); - - BowSession bowSession = BowSession.getBowSession(session); - BowUser user = bowSession.getUser(); - String result = invocation.invoke(); - - //If the user is logged - if (user != null) { - ServletActionContext.getResponse().sendRedirect(redirect); - result = null; - } - return result; - } - -} Modified: trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-04-28 15:26:48 UTC (rev 275) +++ trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-04-29 21:02:55 UTC (rev 276) @@ -72,13 +72,12 @@ //Authenticates the user bowSession.setUser(user); } - } else { - //If the token is empty - ServletActionContext.getResponse().sendRedirect(redirect); } } - if (user != null) { + if (user == null) { + ServletActionContext.getResponse().sendRedirect(redirect); + } else { result = invocation.invoke(); } Added: trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LogoutInterceptor.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LogoutInterceptor.java (rev 0) +++ trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LogoutInterceptor.java 2011-04-29 21:02:55 UTC (rev 276) @@ -0,0 +1,46 @@ +/* + * #%L + * bow + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 - 2011 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package org.chorem.bow.interceptor; + +import java.util.Map; + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.interceptor.AbstractInterceptor; +import org.chorem.bow.BowSession; + +/** + * Interceptor used to remove all trace of user in session. Used for login page + */ +public class LogoutInterceptor extends AbstractInterceptor { + private static final long serialVersionUID = -7520186185205372272L; + + @Override + public String intercept(ActionInvocation invocation) throws Exception { + Map<String, Object> session = ActionContext.getContext().getSession(); + BowSession.invalidate(session); + String result = invocation.invoke(); + return result; + } +} Modified: trunk/bow-ui/src/main/resources/struts.xml =================================================================== --- trunk/bow-ui/src/main/resources/struts.xml 2011-04-28 15:26:48 UTC (rev 275) +++ trunk/bow-ui/src/main/resources/struts.xml 2011-04-29 21:02:55 UTC (rev 276) @@ -31,42 +31,72 @@ <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> <constant name="struts.enable.SlashesInActionNames" value="true"/> - <!-- <default-action-ref name="" />--><!-- TODO: action à lancer quand une action n'existe pas --> - <package name="alias" extends="struts-default"> + <!-- + | Definition d'un package pour l'espace public + | - surcharge de parametre de certain intercepteur + +--> + <package name="publicArea" extends="struts-default"> + <interceptors> + <interceptor-stack name="publicAreaStack"> + <interceptor-ref name="defaultStack"> + <param name="store.operationMode">AUTOMATIC</param> + <param name="fileUpload.allowedExtensions">.html</param> + </interceptor-ref> + </interceptor-stack> + </interceptors> + <default-interceptor-ref name="publicAreaStack"/> + </package> + + <!-- + | Definition d'un package pour l'espace des page de login + | - ajout de l'intercepteur qui verifie que la personne est bien identifiee + +--> + <package name="loginArea" extends="publicArea"> + <interceptors> + <interceptor name="logout" class="org.chorem.bow.interceptor.LogoutInterceptor"/> + <interceptor-stack name="loginAreaStack"> + <interceptor-ref name="logout"/> + <interceptor-ref name="publicAreaStack"/> + </interceptor-stack> + </interceptors> + <default-interceptor-ref name="loginAreaStack"/> + </package> + + <!-- + | Definition d'un package pour l'espace prive + | - ajout de l'intercepteur qui verifie que la personne est bien identifiee + +--> + <package name="restrictedArea" extends="publicArea"> + <interceptors> + <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor"> + <param name="redirect">login_input.action</param> + </interceptor> + <interceptor-stack name="restrictedAreaStack"> + <interceptor-ref name="login"/> + <interceptor-ref name="publicAreaStack"/> + </interceptor-stack> + </interceptors> + <default-interceptor-ref name="restrictedAreaStack"/> + </package> + + <package name="alias" extends="publicArea"> <action name="alias/*" class="org.chorem.bow.action.AliasAction"> <param name="alias">{1}</param> <result name="success" type="redirect">${redirectTo}</result> <result name="error" type="redirectAction">home</result> </action> - <action name="*Alias" class="org.chorem.bow.action.AliasAction" method="{1}"> - <result name="success" type="redirectAction">home</result> - <result name="error" type="redirectAction">home</result> - </action> </package> - <!-- <default-action-ref name="" />--><!-- TODO: action à lancer quand une action n'existe pas --> - <package name="login" extends="struts-default"> - <interceptors> - <interceptor name="aldyLogged" class="org.chorem.bow.interceptor.AldyLoggedInterceptor"> - <param name="redirect">home.action</param> - </interceptor> - <interceptor-stack name="aldyLoggedStack"> - <interceptor-ref name="aldyLogged"/> - <interceptor-ref name="defaultStack"/> - </interceptor-stack> - </interceptors> + <package name="login" extends="loginArea"> <action name="register_*" method="{1}" class="org.chorem.bow.action.RegisterAction"> - <interceptor-ref name="aldyLoggedStack"/> <result name="input">/jsp/register.jsp</result> <result type="redirectAction">home</result> </action> <action name="forgotPassword_*" method="{1}" class="org.chorem.bow.action.ForgotPasswordAction"> - <interceptor-ref name="aldyLoggedStack"/> <result name="input">/jsp/forgotPassword.jsp</result> <result type="redirectAction">login_input</result> </action> <action name="login_*" method="{1}" class="org.chorem.bow.action.LoginAction"> - <interceptor-ref name="aldyLoggedStack"/> <result name="input">/jsp/login.jsp</result> <result name="login" type="redirectAction">home</result> <result type="redirectAction">home</result> @@ -76,45 +106,12 @@ </action> </package> - <package name="bookmark" extends="struts-default"> - <interceptors> - <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor"> - <param name="redirect">login_input.action</param> - </interceptor> - <interceptor-stack name="loginStack"> - <interceptor-ref name="login"/> - <interceptor-ref name="defaultStack"/> - </interceptor-stack> - </interceptors> + <package name="bookmark" extends="restrictedArea"> <action name="importBookmarks" class="org.chorem.bow.action.ImportBookmarksAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="login"/> - <interceptor-ref name="exception"/> - <interceptor-ref name="alias"/> - <interceptor-ref name="servletConfig"/> - <interceptor-ref name="i18n"/> - <interceptor-ref name="prepare"/> - <interceptor-ref name="chain"/> - <interceptor-ref name="debugging"/> - - <!-- TODO sletellier 20110310 : create own interceptor to define better error message --> - <interceptor-ref name="fileUpload"> - <param name="allowedExtensions">.html</param> - </interceptor-ref> - <interceptor-ref name="staticParams"/> - <interceptor-ref name="actionMappingParams"/> - <interceptor-ref name="params"> - <param name="excludeParams">dojo\..*,^struts\..*</param> - </interceptor-ref> - <interceptor-ref name="conversionError"/> - <result type="redirectAction">preferences</result> <result name="error">/jsp/preferences.jsp</result> </action> <action name="exportBookmarks" class="org.chorem.bow.action.ExportBookmarksAction"> - <interceptor-ref name="loginStack"/> <result type="stream"> <param name="contentType">application/octet-stream</param> <param name="inputName">inputStream</param> @@ -122,85 +119,39 @@ </result> </action> <action name="removeBookmark" class="org.chorem.bow.action.RemoveBookmarkAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result type="redirect">${redirectTo}</result> </action> <action name="deleteImport" class="org.chorem.bow.action.DeleteImportAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result type="redirectAction">preferences</result> </action> <action name="addUrl" class="org.chorem.bow.action.AddUrlAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result type="redirect">${redirectTo}</result> </action> </package> - <package name="search" extends="struts-default"> - <interceptors> - <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor"> - <param name="redirect">login_input.action</param> - </interceptor> - <interceptor-stack name="loginStack"> - <interceptor-ref name="login"/> - <interceptor-ref name="defaultStack"/> - </interceptor-stack> - </interceptors> + <package name="search" extends="restrictedArea"> <action name="search" class="org.chorem.bow.action.SearchAction"> - <interceptor-ref name="store"> - <param name="operationMode">RETRIEVE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result>/jsp/search.jsp</result> </action> <action name="fullText" class="org.chorem.bow.action.FullTextSearchAction"> - <interceptor-ref name="loginStack"/> <result>/jsp/search.jsp</result> </action> <action name="order" class="org.chorem.bow.action.OrderAction"> - <interceptor-ref name="loginStack"/> <result>/jsp/search.jsp</result> </action> <action name="openSearchResult" class="org.chorem.bow.action.OpenSearchResultAction"> - <interceptor-ref name="loginStack"/> <result type="redirect">${redirectTo}</result> </action> <action name="openSearchSuggestion" class="org.chorem.bow.action.OpenSearchSuggestionAction"> - <interceptor-ref name="loginStack"/> <result>/jsp/suggestions.jsp</result> </action> <action name="deleteSearchResults" class="org.chorem.bow.action.DeleteSearchResultsAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result type="redirectAction">home</result> </action> </package> - <package name="misc" extends="struts-default"> - <interceptors> - <interceptor name="login" class="org.chorem.bow.interceptor.LoginInterceptor"> - <param name="redirect">login_input.action</param> - </interceptor> - <interceptor-stack name="loginStack"> - <interceptor-ref name="login"/> - <interceptor-ref name="defaultStack"/> - </interceptor-stack> - </interceptors> + <package name="misc" extends="restrictedArea"> <action name="home" class="org.chorem.bow.action.HomeAction"> - <interceptor-ref name="store"> - <param name="operationMode">RETRIEVE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result>/jsp/home.jsp</result> <result name="input" type="redirectAction">home</result> </action> @@ -208,14 +159,9 @@ <result type="redirect">/jsp/login.jsp</result> </action> <action name="regenPermToken" class="org.chorem.bow.action.GenerateTokenAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result type="redirectAction">preferences</result> </action> <action name="redirectToUrl" class="org.chorem.bow.action.RedirectToUrlAction"> - <interceptor-ref name="loginStack"/> <result name="error" type="redirectAction">home</result> <result type="redirect">${link}</result> </action> @@ -228,35 +174,21 @@ </action> <action name="preferences" class="org.chorem.bow.action.PreferencesAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="store"> - <param name="operationMode">RETRIEVE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result name="update" type="redirectAction">preferences</result> <result name="error">/jsp/preferences.jsp</result> <result>/jsp/preferences.jsp</result> </action> <action name="admin"> - <interceptor-ref name="loginStack"/> <result name="error">/jsp/login.jsp</result> <result>/jsp/admin.jsp</result> </action> <action name="reIndexation" class="org.chorem.bow.action.ReIndexationAction"> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="loginStack"/> <result>/jsp/admin.jsp</result> </action> <action name="migrate04To05" class="org.chorem.bow.action.Migrate04To05Action"> - <interceptor-ref name="loginStack"/> <result>/jsp/admin.jsp</result> </action> <action name="editBookmark" class="org.chorem.bow.action.EditBookmarkAction"> - <interceptor-ref name="loginStack"/> <result>/jsp/editBookmark.jsp</result> </action> </package> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-04-28 15:26:48 UTC (rev 275) +++ trunk/pom.xml 2011-04-29 21:02:55 UTC (rev 276) @@ -122,7 +122,7 @@ <eugenePluginVersion>2.3.2</eugenePluginVersion> <nuitonUtilsVersion>2.1.2</nuitonUtilsVersion> <nuitonI18nVersion>2.3.1</nuitonI18nVersion> - <wikittyVersion>3.1</wikittyVersion> + <wikittyVersion>3.1.1-SNAPSHOT</wikittyVersion> <slf4jVersion>1.6.1</slf4jVersion> <struts2Version>2.1.8.1</struts2Version> <xWorkCoreVersion>2.1.6</xWorkCoreVersion>