r888 - in trunk/wikitty-publication/src/main: java/org/nuiton/wikitty/publication java/org/nuiton/wikitty/publication/action resources webapp
Author: mfortun Date: 2011-05-13 14:50:59 +0200 (Fri, 13 May 2011) New Revision: 888 Url: http://nuiton.org/repositories/revision/wikitty/888 Log: * cosmetic change * add register page and action * #1504 login implemented Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java trunk/wikitty-publication/src/main/webapp/register.jsp Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.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/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java trunk/wikitty-publication/src/main/resources/struts.xml Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java 2011-05-13 09:15:02 UTC (rev 887) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java 2011-05-13 12:50:59 UTC (rev 888) @@ -40,19 +40,9 @@ */ 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; } @@ -65,14 +55,11 @@ @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) { Modified: 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 2011-05-13 09:15:02 UTC (rev 887) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java 2011-05-13 12:50:59 UTC (rev 888) @@ -28,8 +28,6 @@ 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 @@ -43,8 +41,9 @@ protected String password; protected String error; - static public String DEFAULT_ERROR = "login.jsp"; protected String success; + + static public String DEFAULT_ERROR = "login.jsp"; static public String DEFAULT_SUCCESS = "index.jsp"; public String getLogin() { @@ -63,8 +62,27 @@ this.password = password; } - public String execute() { + 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; + } + + /** + * Method executed when struts invoke it and the struts action mapped to + * this class + */ + public String execute() { String result = ERROR; if (login != null) { @@ -78,10 +96,11 @@ WikittyPublicationProxy proxy = getWikittyPublicationSession() .getProxy(); + // Try to log a wikitty user proxy.login(login, md5); WikittyUser user = proxy.getLoggedInUser(); - + // check if a user is logged if (user != null) { getWikittyPublicationSession().setUser(user); result = SUCCESS; @@ -97,25 +116,4 @@ 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 Modified: 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 2011-05-13 09:15:02 UTC (rev 887) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-05-13 12:50:59 UTC (rev 888) @@ -28,33 +28,26 @@ - +/** + * Class used as an action logout + * + * @author mfortun + * + */ public class PublicationActionLogout extends PublicationBaseAction { protected String success; - private static final long serialVersionUID = 4806944250461551896L; - - - - - + private static final long serialVersionUID = 4806944250461551896L; + public String getSuccess() { return success; } - - - - - + public void setSuccess(String success) { this.success = success; } - - - - public String execute() { WikittyPublicationSession.invalidate(session); return SUCCESS; Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java 2011-05-13 12:50:59 UTC (rev 888) @@ -0,0 +1,112 @@ +package org.nuiton.wikitty.publication.action; + +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.entities.WikittyUser; +import org.nuiton.wikitty.entities.WikittyUserImpl; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.Search; + +/** + * Class mapped to the registered action, it create a wikittyuser with the + * information send by the form + * + * @author mfortun + * + */ +public class PublicationActionRegister extends PublicationBaseAction { + private static final long serialVersionUID = 2204772861770399542L; + protected String login; + protected String password; + protected String repeatPassword; + + 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 getRepeatPassword() { + return repeatPassword; + } + + public void setRepeatPassword(String repeatPassword) { + this.repeatPassword = repeatPassword; + } + + protected boolean alreadyRegistered() { + boolean result = true; + + WikittyProxy proxy = getWikittyPublicationProxy(); + Criteria criteria = Search.query() + .eq(WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria(); + + // If the user doesn't already exist + if (proxy.findByCriteria(WikittyUser.class, criteria) == null) { + result = false; + } + + return result; + } + + /** + * Registers the new user and sends an email to confirm registration + */ + public String execute() { + String result = INPUT; + + try { + if (login != null) { + login = login.trim(); + if (password != null) { + if (!password.equals(repeatPassword)) { + // TODO mfortun-2011-05-13 handle error message in jsp + } else { + String md5 = StringUtil.encodeMD5(password); + + // If the email address isn't already used + if (!alreadyRegistered()) { + WikittyProxy proxy = getWikittyPublicationProxy(); + + WikittyUser user = new WikittyUserImpl(); + user.setLogin(login); + user.setPassword(md5); + + WikittyUser userLoged = proxy.store(user); + // check if wikitty still exist + if (userLoged == null) { + // TODO mfortun-2011-05-13 handle error message + // in jsp + } else { + // try to login with information + proxy.login(login, md5); + // if logged it works + if (proxy.getLoggedInUser() != null) { + + getWikittyPublicationSession().setUser( + proxy.getLoggedInUser()); + + result = SUCCESS; + } + } + } + } + } + } + } catch (Exception e) { + // TODO mfortun-2011-05-13 really handle exception + e.printStackTrace(); + } + return result; + } +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-05-13 09:15:02 UTC (rev 887) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-05-13 12:50:59 UTC (rev 888) @@ -1,12 +1,9 @@ package org.nuiton.wikitty.publication.action; -import java.util.Collection; + import java.util.List; import java.util.Map; -import java.util.Map.Entry; - import org.apache.struts2.interceptor.SessionAware; -import org.nuiton.util.StringUtil; import org.nuiton.wikitty.publication.WikittyPublicationProxy; import org.nuiton.wikitty.publication.WikittyPublicationSession; import org.nuiton.wikitty.publication.entities.WikittyPubData; @@ -60,40 +57,8 @@ this.session = sess; } + /** - * Recherche le type mime dont on a besoin. Par defaut recherche dans les - * arguments si on a dans l'ordre de preference <li>ARG_MIMETYPE + - * SEARCH_SEPARATOR + name (ex: mimetype:MyCommand.name:df=text/plain) <li> - * ARG_MIMETYPE (ex: mimetype=MyCommand.mimetype) <li>si w a l'extension - * WikittyPubText alors on prend la valeur du champs mimetype <li>si w a - * l'extension WikittyPubData alors on prend la valeur du champs mimetype - * <li>on retourne null - * - * @param context - * @param name - * la chaine utilise pour faire la recherche du wikitty - * @param w - * le wikitty trouve grace a name - * @return le mimetype ou null - * - * protected String getMimeType( String name, Wikitty w) { // - * looking for mimetype field String mimetype = context.getArgument( - * ARG_MIMETYPE + SEARCH_SEPARATOR + name, null); if (mimetype == - * null) { mimetype = context.getArgument(ARG_MIMETYPE, null); } if - * (mimetype != null) { int i = - * mimetype.indexOf(WikittyUtil.FQ_FIELD_NAME_SEPARATOR); if (i > 0) - * { // perhaps fully qualified field String extName = - * WikittyExtension.extractExtensionName(mimetype); String fieldName - * = WikittyExtension.extractFieldName(mimetype); if - * (w.hasField(extName, fieldName)) { // mimetype target field in - * wikitty // replace with field value mimetype = - * w.getFieldAsString(extName, fieldName); } } } else if - * (w.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT)) { mimetype = - * WikittyPubTextHelper.getMimeType(w); } else if - * (w.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) { mimetype = - * WikittyPubDataHelper.getMimeType(w); } return mimetype; } - */ - /** * Retourne le critere pour recherche l'objet sur lequel faire l'action. Le * nom du critere doit etre convenablement positionné avec la chaine qui a * permit la recherche @@ -127,33 +92,7 @@ return result; } - /** - * Recherche le champs contenant le content dont on a besoin. Par defaut - * recherche dans les arguments si on a dans l'ordre de preference <li> - * ARG_CONTENT_FIELD + SEARCH_SEPARATOR + name (ex: - * contentField:MyCommand.name:df=MyCommand.script) <li>ARG_CONTENT_FIELD - * (ex: contentField=MyCommand.script) <li>si w a l'extension WikittyPubText - * alors on prend le champs content <li>si w a l'extension WikittyPubData - * alors on prend le champs content <li>on retourne null - * - * @param context - * @param name - * la chaine utilise pour faire la recherche du wikitty - * @param w - * le wikitty trouve grace a name - * @return le champs contenant le content ou null - * - * protected String getContentFieldName(WikittyPublicationContext - * context, String name, Wikitty w) { String contentField = - * context.getArgument( ARG_CONTENT_FIELD + SEARCH_SEPARATOR + name, - * null); if (contentField == null) { contentField = - * context.getArgument(ARG_CONTENT_FIELD, null); } if (contentField - * == null) { if (w.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT)) - * { contentField = WikittyPubText.FQ_FIELD_WIKITTYPUBTEXT_CONTENT; - * } else if (w.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) { - * contentField = WikittyPubData.FQ_FIELD_WIKITTYPUBDATA_CONTENT; } - * } return contentField; } - */ + protected String getError(PublicationContext context) { context.setContentType("text/html"); Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java 2011-05-13 09:15:02 UTC (rev 887) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java 2011-05-13 12:50:59 UTC (rev 888) @@ -10,7 +10,12 @@ import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; - +/** + * Interface for eval action. + * + * @author mfortun + * + */ public interface PublicationContext { Modified: trunk/wikitty-publication/src/main/resources/struts.xml =================================================================== --- trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-13 09:15:02 UTC (rev 887) +++ trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-13 12:50:59 UTC (rev 888) @@ -10,20 +10,20 @@ <constant name="struts.enable.SlashesInActionNames" value="true" /> - + <!-- basic interceptor stack use redefine our stack --> <package name="publicArea" extends="struts-default"> <interceptors> <interceptor-stack name="publicAreaStack"> - <interceptor-ref name="defaultStack"> - + <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> @@ -36,13 +36,13 @@ </interceptors> <default-interceptor-ref name="loginAreaStack" /> </package> - - <!-- Define a package for the restricted area --> + + <!-- Define a package for the restricted area must be logged to access --> <package name="restrictedArea" extends="publicArea"> <interceptors> <interceptor name="login" class="org.nuiton.wikitty.publication.LoginInterceptor"> - <param name="error">/login.jsp</param> + <param name="error">/wikitty-publication/login_input.action</param> </interceptor> <interceptor-stack name="restrictedAreaStack"> <interceptor-ref name="login" /> @@ -51,27 +51,26 @@ </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 name="register_*" method="{1}" + class="org.nuiton.wikitty.publication.action.PublicationActionRegister"> + <result name="input">register.jsp</result> + <result type="redirect">index.jsp</result> </action> - <action name="logout" class="org.nuiton.wikitty.publication.action.PublicationActionLogout"> + <action name="login_*" method="{1}" + class="org.nuiton.wikitty.publication.action.PublicationActionLogin"> + <result name="input">login.jsp</result> + <result name="success" type="redirect">${success}</result> + <result name="error" type="redirect">${error}</result> + </action> + <action name="logout" + class="org.nuiton.wikitty.publication.action.PublicationActionLogout"> <result type="redirect">${success}</result> </action> </package> - - - + <!-- Action aviable only to logged user --> <package name="publication" extends="restrictedArea"> <action name="*/edit/*" @@ -108,18 +107,4 @@ </result> </action> </package> - - - - - - <!-- <package name="wikitty-publication" namespace="/" extends="struts-default"> - <default-action-ref name="home" /> <action name="*/action/*" class="org.nuiton.nospamweb.action.CheckAction"> - <param name="context">{1}</param> <param name="args">{1}</param> <result - name="input">WEB-INF/jsp/captcha.jsp</result> <result name="success" type="redirect">${redirectTo}</result> - </action> </package> code base for action <action name="*/action/*" class="org.nuiton.nospamweb.action.CheckAction"> - <param name="context">{1}</param> <param name="args">{1}</param> <result - name="input">WEB-INF/jsp/captcha.jsp</result> <result name="success" type="redirect">${redirectTo}</result> - </action> --> - </struts> Added: trunk/wikitty-publication/src/main/webapp/register.jsp =================================================================== --- trunk/wikitty-publication/src/main/webapp/register.jsp (rev 0) +++ trunk/wikitty-publication/src/main/webapp/register.jsp 2011-05-13 12:50:59 UTC (rev 888) @@ -0,0 +1,25 @@ + +<%@taglib prefix="s" uri="/struts-tags"%> +<div id="content"> + <div id="formFrame" class="fond"> + <h1> + <s:text name="Register" /> + </h1> + <s:form action="register"> + <s:actionerror /> + <p> + <s:textfield key="publication.login.login" name="login" + labelposition="top" labelSeparator=" :" /> + <s:password key="publication.login.password" name="password" + labelposition="top" labelSeparator=" :" /> + <s:password key="publication.login.repeatPassword" + name="repeatPassword" labelposition="top" labelSeparator=" :" /> + <s:submit key="publication.register.submit" name="submit" /> + </p> + </s:form> + <s:a action="login_input" id="loginLink"> + <s:text name="login" /> + </s:a> + </div> + +</div> \ No newline at end of file Property changes on: trunk/wikitty-publication/src/main/webapp/register.jsp ___________________________________________________________________ Added: svn:mime-type + text/plain
participants (1)
-
mfortun@users.nuiton.org