r214 - in branches/nuiton-web-1.11-security/nuiton-secu/src/main: java/org/nuiton/web/secu/actions resources resources/WEB-INF/secu resources/i18n
Author: echatellier Date: 2012-10-11 11:24:10 +0200 (Thu, 11 Oct 2012) New Revision: 214 Url: http://nuiton.org/repositories/revision/nuiton-web/214 Log: Add login/logout actions Added: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogin.java branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogout.java Modified: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuRole.java branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuUser.java branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/WEB-INF/secu/secu-login.jsp branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_en_GB.properties branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_fr_FR.properties branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/struts.xml Added: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogin.java =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogin.java (rev 0) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogin.java 2012-10-11 09:24:10 UTC (rev 214) @@ -0,0 +1,72 @@ +package org.nuiton.web.secu.actions; + +import static org.nuiton.i18n.I18n._; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.ExcessiveAttemptsException; +import org.apache.shiro.authc.IncorrectCredentialsException; +import org.apache.shiro.authc.LockedAccountException; +import org.apache.shiro.authc.UnknownAccountException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.nuiton.web.SecuDAOHelper; +import org.nuiton.web.secu.SecuUserDAO; + +import com.opensymphony.xwork2.Preparable; + +public class SecuLogin extends AbstractSecuAction implements Preparable { + + /** serialVersionUID. */ + private static final long serialVersionUID = 1L; + + protected SecuUserDAO secuUserDAO; + + protected String login; + + protected String password; + + public void setLogin(String login) { + this.login = login; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void prepare() throws Exception { + secuUserDAO = SecuDAOHelper.getSecuUserDAO(transaction); + } + + @Override + public String execute() throws Exception { + String result = null; + + if (login == null || password == null) { + result = input(); + } else { + try { + Subject currentUser = SecurityUtils.getSubject(); + UsernamePasswordToken token = new UsernamePasswordToken(login, password); + currentUser.login(token); + result = SUCCESS; + } catch (UnknownAccountException ex) { + addActionError(_("Identifiant ou mot de passe invalide !", login)); + result = input(); + } catch (IncorrectCredentialsException ex) { + addActionError(_("Identifiant ou mot de passe invalide !")); + result = input(); + } catch (LockedAccountException ex) { + addActionError(_("Compte bloqué. Contacter un administrateur", login)); + result = input(); + } catch (ExcessiveAttemptsException ex) { + addActionError(_("Nombre de tentatives dépassé")); + result = input(); + } catch (AuthenticationException ex) { + addActionError(ex.getMessage()); + result = input(); + } + } + return result; + } +} Property changes on: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogin.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogout.java =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogout.java (rev 0) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogout.java 2012-10-11 09:24:10 UTC (rev 214) @@ -0,0 +1,29 @@ +package org.nuiton.web.secu.actions; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; +import org.nuiton.web.SecuDAOHelper; +import org.nuiton.web.secu.SecuUserDAO; + +import com.opensymphony.xwork2.Preparable; + +public class SecuLogout extends AbstractSecuAction implements Preparable { + + /** serialVersionUID. */ + private static final long serialVersionUID = 1L; + + protected SecuUserDAO secuUserDAO; + + @Override + public void prepare() throws Exception { + secuUserDAO = SecuDAOHelper.getSecuUserDAO(transaction); + } + + @Override + public String execute() throws Exception { + Subject currentUser = SecurityUtils.getSubject(); + currentUser.logout(); + + return SUCCESS; + } +} Property changes on: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuLogout.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuRole.java =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuRole.java 2012-10-11 09:23:41 UTC (rev 213) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuRole.java 2012-10-11 09:24:10 UTC (rev 214) @@ -1,13 +1,9 @@ package org.nuiton.web.secu.actions; -import javax.servlet.http.HttpServletRequest; - import org.apache.commons.lang3.StringUtils; -import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaRuntimeException; import org.nuiton.web.SecuDAOHelper; -import org.nuiton.web.filter.TopiaTransactionFilter; import org.nuiton.web.secu.SecuRoleDAO; import org.nuiton.web.secu.SecuRoleImpl; @@ -18,28 +14,15 @@ /** serialVersionUID. */ private static final long serialVersionUID = 1L; - /** Topia context associated with request. */ - protected TopiaContext transaction; - protected SecuRoleDAO secuRoleDAO; protected org.nuiton.web.secu.SecuRole role; @Override - public void setServletRequest(HttpServletRequest request) { - transaction = TopiaTransactionFilter.getTransaction(request); - } - - @Override public void prepare() throws Exception { secuRoleDAO = SecuDAOHelper.getSecuRoleDAO(transaction); } - @Override - public String input() throws Exception { - return super.input(); - } - public org.nuiton.web.secu.SecuRole getRole() { if (role == null) { String roleId = getParameter("roleId"); Modified: branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuUser.java =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuUser.java 2012-10-11 09:23:41 UTC (rev 213) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/java/org/nuiton/web/secu/actions/SecuUser.java 2012-10-11 09:24:10 UTC (rev 214) @@ -1,13 +1,9 @@ package org.nuiton.web.secu.actions; -import javax.servlet.http.HttpServletRequest; - import org.apache.commons.lang3.StringUtils; -import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaRuntimeException; import org.nuiton.web.SecuDAOHelper; -import org.nuiton.web.filter.TopiaTransactionFilter; import org.nuiton.web.secu.SecuUserDAO; import org.nuiton.web.secu.SecuUserImpl; @@ -18,28 +14,15 @@ /** serialVersionUID. */ private static final long serialVersionUID = 1L; - /** Topia context associated with request. */ - protected TopiaContext transaction; - protected SecuUserDAO secuUserDAO; protected org.nuiton.web.secu.SecuUser user; @Override - public void setServletRequest(HttpServletRequest request) { - transaction = TopiaTransactionFilter.getTransaction(request); - } - - @Override public void prepare() throws Exception { secuUserDAO = SecuDAOHelper.getSecuUserDAO(transaction); } - @Override - public String input() throws Exception { - return super.input(); - } - public org.nuiton.web.secu.SecuUser getUser() { if (user == null) { String roleId = getParameter("userId"); Modified: branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/WEB-INF/secu/secu-login.jsp =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/WEB-INF/secu/secu-login.jsp 2012-10-11 09:23:41 UTC (rev 213) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/WEB-INF/secu/secu-login.jsp 2012-10-11 09:24:10 UTC (rev 214) @@ -3,14 +3,14 @@ <%@taglib uri="/struts-tags" prefix="s" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head> - <title>Sécurité</title> + <title>Authentification requise</title> </head> <body> - <h1>Sécurité</h1> + <h1>Authentification requise</h1> - <h2>Utilisateur</h2> + <h2>Connexion</h2> <s:form action="secu-login" namespace="/secu"> <s:actionerror /> Modified: branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_en_GB.properties =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_en_GB.properties 2012-10-11 09:23:41 UTC (rev 213) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_en_GB.properties 2012-10-11 09:24:10 UTC (rev 214) @@ -0,0 +1,3 @@ +Compte\ bloqué.\ Contacter\ un\ administrateur= +Identifiant\ ou\ mot\ de\ passe\ invalide\ \!= +Nombre\ de\ tentatives\ dépassé= Modified: branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_fr_FR.properties =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_fr_FR.properties 2012-10-11 09:23:41 UTC (rev 213) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/i18n/nuiton-secu_fr_FR.properties 2012-10-11 09:24:10 UTC (rev 214) @@ -0,0 +1,3 @@ +Compte\ bloqué.\ Contacter\ un\ administrateur= +Identifiant\ ou\ mot\ de\ passe\ invalide\ \!= +Nombre\ de\ tentatives\ dépassé= Modified: branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/struts.xml =================================================================== --- branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/struts.xml 2012-10-11 09:23:41 UTC (rev 213) +++ branches/nuiton-web-1.11-security/nuiton-secu/src/main/resources/struts.xml 2012-10-11 09:24:10 UTC (rev 214) @@ -7,7 +7,6 @@ </package> - <package name="org.nuiton.web.secu.actions" namespace="/secu" extends="secu"> <default-action-ref name="secu-matrix"/> @@ -29,6 +28,17 @@ <param name="actionName">secu-matrix</param> </result> </action> + <action name="secu-login" class="org.nuiton.web.secu.actions.SecuLogin"> + <result name="input">/WEB-INF/secu/secu-login.jsp</result> + <result name="success" type="redirectAction"> + <param name="actionName">secu-matrix</param> + </result> + </action> + <action name="secu-logout" class="org.nuiton.web.secu.actions.SecuLogout"> + <result name="success" type="redirectAction"> + <param name="actionName">secu-login</param> + </result> + </action> </package> </struts>
participants (1)
-
echatellier@users.nuiton.org