r885 - in trunk/wikitty-publication/src/main: java/org/nuiton/wikitty/publication java/org/nuiton/wikitty/publication/action resources webapp
Author: mfortun Date: 2011-05-12 18:16:20 +0200 (Thu, 12 May 2011) New Revision: 885 Url: http://nuiton.org/repositories/revision/wikitty/885 Log: * login page basically works, if not logged acces to publication action not allowed * need to reworks on redirect action to show login page if not allowed then show requested page after login Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LogoutInterceptor.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java trunk/wikitty-publication/src/main/webapp/login.jsp Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java trunk/wikitty-publication/src/main/resources/struts.xml Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java 2011-05-12 16:16:20 UTC (rev 885) @@ -0,0 +1,93 @@ +/* + * #%L + * bow + * + * $Id: LoginInterceptor.java 276 2011-04-29 21:02:55Z bpoussin $ + * $HeadURL: http://svn.chorem.org/svn/bow/trunk/bow-ui/src/main/java/org/chorem/bow/inte... $ + * %% + * 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.nuiton.wikitty.publication; + +import java.util.Map; + +import org.apache.struts2.ServletActionContext; +import org.nuiton.wikitty.entities.WikittyUser; + + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.interceptor.AbstractInterceptor; + + +/** + * Interceptor used to redirect a non-logged user if he tries to access a page + * where logging is mandatory + */ +public class LoginInterceptor extends AbstractInterceptor { + private static final long serialVersionUID = -7520186185205372272L; + protected String succes; + protected String error; + + + + public String getSucces() { + return succes; + } + + public void setSucces(String succes) { + this.succes = succes; + } + + public String getError() { + return error; + } + + public void setError(String error) { + this.error = error; + } + + + @Override + public String intercept(ActionInvocation invocation) throws Exception { + Map<String, Object> session = ActionContext.getContext().getSession(); + + + + + + WikittyPublicationSession pubSession = WikittyPublicationSession.getWikittyPublicationSession(session); + WikittyUser user = pubSession.getUser(); + String result = null; + + //If the user isn't logged in + if (user == null) { + ServletActionContext.getResponse().sendRedirect(error); + } else { + result = invocation.invoke(); + } + + + + + result = invocation.invoke(); + return result; + } + + + +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LogoutInterceptor.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LogoutInterceptor.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LogoutInterceptor.java 2011-05-12 16:16:20 UTC (rev 885) @@ -0,0 +1,53 @@ +/* + * #%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.nuiton.wikitty.publication; + +import java.util.Map; + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.interceptor.AbstractInterceptor; + +/** + * Interceptor used to remove all trace of user in session. Used for login page + */ +public class LogoutInterceptor extends AbstractInterceptor { + + /** + * + */ + private static final long serialVersionUID = -66045004020326043L; + + + + @Override + public String intercept(ActionInvocation invocation) throws Exception { + System.out.println("passed logout"); + + Map<String, Object> session = ActionContext.getContext().getSession(); + WikittyPublicationSession.invalidate(session); + String result = invocation.invoke(); + return result; + } +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LogoutInterceptor.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java 2011-05-11 15:09:23 UTC (rev 884) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java 2011-05-12 16:16:20 UTC (rev 885) @@ -6,6 +6,7 @@ import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.entities.WikittyUser; public class WikittyPublicationSession implements Serializable { @@ -21,11 +22,16 @@ .getSimpleName(); protected WikittyPublicationProxy proxy; + protected WikittyUser user; public WikittyPublicationSession() { proxy = WikittyPublicationProxy.getInstance(null); } + /** + * remove wikittypublicationSession from the httpsession + * @param session + */ static public void invalidate(Map<String, Object> session) { session.remove(WIKITTY_PUBLICATION_SESSION_KEY); } @@ -63,4 +69,12 @@ return proxy; } + public WikittyUser getUser() { + return user; + } + + public void setUser(WikittyUser user) { + this.user = user; + } + } Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java 2011-05-12 16:16:20 UTC (rev 885) @@ -0,0 +1,121 @@ +/* + * #%L + * bow + * + * $Id: LoginAction.java 228 2011-03-03 10:59:29Z vbriand $ + * $HeadURL: http://svn.chorem.org/svn/bow/trunk/bow-ui/src/main/java/org/chorem/bow/acti... $ + * %% + * Copyright (C) 2010 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.nuiton.wikitty.publication.action; + +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.entities.WikittyUser; +import org.nuiton.wikitty.publication.WikittyPublicationProxy; + +import com.opensymphony.xwork2.ActionContext; + +/** + * Class used as an action login, call the login method on the proxy with + * login/password pass threw the login form + * + * @author mfortun + * + */ +public class PublicationActionLogin extends PublicationBaseAction { + private static final long serialVersionUID = 6891064800288772246L; + protected String login; + protected String password; + + protected String error = DEFAULT_ERROR; + static protected String DEFAULT_ERROR = "login.jsp"; + protected String success = DEFAULT_SUCCESS; + static protected String DEFAULT_SUCCESS = "index.jsp"; + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String execute() { + + String result = ERROR; + + if (login != null) { + login = login.trim(); + + if (password != null) { + String md5 = StringUtil.encodeMD5(password); + + try { + + WikittyPublicationProxy proxy = getWikittyPublicationSession() + .getProxy(); + + proxy.login(login, md5); + + WikittyUser user = proxy.getLoggedInUser(); + + if (user != null) { + getWikittyPublicationSession().setUser(user); + result = SUCCESS; + } + } catch (Exception e) { + // TODO mfortun-2011-05-12 handle exception due to wrong + // login/password + e.printStackTrace(); + } + } + } + + return result; + } + + public String getError() { + + return error; + } + + public void setError(String error) { + + this.error = error; + } + + public String getSuccess() { + + return success; + } + + public void setSuccess(String success) { + + this.success = success; + + } + +} \ No newline at end of file Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-05-12 16:16:20 UTC (rev 885) @@ -0,0 +1,38 @@ +/* + * #%L + * bow + * + * $Id: LogoutAction.java 192 2011-02-14 14:53:06Z tchemit $ + * $HeadURL: http://svn.chorem.org/svn/bow/trunk/bow-ui/src/main/java/org/chorem/bow/acti... $ + * %% + * 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.nuiton.wikitty.publication.action; + +import org.nuiton.wikitty.publication.WikittyPublicationSession; + + + +public class PublicationActionLogout extends PublicationBaseAction { + private static final long serialVersionUID = 4806944250461551896L; + + public String execute() { + System.out.println("logout"); + WikittyPublicationSession.invalidate(session); + return SUCCESS; + } +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/wikitty-publication/src/main/resources/struts.xml =================================================================== --- trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-11 15:09:23 UTC (rev 884) +++ trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-12 16:16:20 UTC (rev 885) @@ -11,22 +11,83 @@ - <package name="test" extends="struts-default"> + <package name="publicArea" extends="struts-default"> + <interceptors> + <interceptor-stack name="publicAreaStack"> + <interceptor-ref name="defaultStack"> + + </interceptor-ref> + </interceptor-stack> + </interceptors> + <default-interceptor-ref name="publicAreaStack" /> + </package> + + + + <!-- Define a package for the login area --> + <package name="loginArea" extends="publicArea"> + <interceptors> + <interceptor name="logout" + class="org.nuiton.wikitty.publication.LogoutInterceptor" /> + <interceptor-stack name="loginAreaStack"> + <interceptor-ref name="logout" /> + <interceptor-ref name="publicAreaStack" /> + </interceptor-stack> + </interceptors> + <default-interceptor-ref name="loginAreaStack" /> + </package> + + <!-- Define a package for the restricted area --> + <package name="restrictedArea" extends="publicArea"> + <interceptors> + <interceptor name="login" + class="org.nuiton.wikitty.publication.LoginInterceptor"> + <param name="error">/login.jsp</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="login" extends="loginArea"> + <action name="login" + class="org.nuiton.wikitty.publication.action.PublicationActionLogin"> + <result>login.jsp</result> + <result name="success" type="redirect">${success}</result> + <result name="error" type="redirect">${error}</result> + <!-- + <result name="input">login.jsp</result> + <result name="login" type="redirectAction">home</result> + <result type="success">home</result> + --> + </action> + <action name="logout" class="org.nuiton.wikitty.publication.action.PublicationActionLogin"> + <result type="redirectAction">login</result> + </action> + </package> + + + + <package name="publication" extends="restrictedArea"> + <action name="*/edit/*" class="org.nuiton.wikitty.publication.action.PublicationActionEdit"> <param name="context">{1}</param> <param name="args">{2}</param> <result>/WEB-INF/jsp/edit.jsp</result> </action> - + <action name="*/view/*" class="org.nuiton.wikitty.publication.action.PublicationActionView"> <param name="context">{1}</param> <param name="args">{2}</param> <result>/WEB-INF/jsp/view.jsp</result> </action> - + <action name="*/raw/*" class="org.nuiton.wikitty.publication.action.PublicationActionRaw"> <param name="context">{1}</param> Added: trunk/wikitty-publication/src/main/webapp/login.jsp =================================================================== --- trunk/wikitty-publication/src/main/webapp/login.jsp (rev 0) +++ trunk/wikitty-publication/src/main/webapp/login.jsp 2011-05-12 16:16:20 UTC (rev 885) @@ -0,0 +1,21 @@ + + + +<%@page + import="org.nuiton.wikitty.publication.WikittyPublicationSession"%> +<%@ taglib prefix="s" uri="/struts-tags"%> +<s:form action="login"> + <p> + <input type="hidden" name="success" value="<%=request.getParameter("success") %>" /> + <input type="hidden" name="error" value="<%=request.getParameter("error") %>" /> + <s:textfield key="login" name="login" labelposition="top" + labelSeparator=" :" /> + <br /> + <br /> + <s:password key="password" name="password" + labelposition="top" labelSeparator=" :" /> + <br /> + <br /> + <s:submit key="publication.login.submit" name="submit" /> + </p> +</s:form> \ No newline at end of file Property changes on: trunk/wikitty-publication/src/main/webapp/login.jsp ___________________________________________________________________ Added: svn:mime-type + text/plain
participants (1)
-
mfortun@users.nuiton.org