Index: lams_central/src/java/org/lamsfoundation/lams/web/PasswordAction.java =================================================================== diff -u --- lams_central/src/java/org/lamsfoundation/lams/web/PasswordAction.java (revision 0) +++ lams_central/src/java/org/lamsfoundation/lams/web/PasswordAction.java (revision 0c587b087e83262e1742ed26a14a8d1d8fbe4656) @@ -0,0 +1,56 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * 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 General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.web; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; + +/** + * @author jliew + * + * @struts:action path="/password" + * name="PasswordChangeActionForm" + * scope="request" + * validate="false" + * + * @struts:action-forward name="passwordChange" path=".passwordChange" + */ +public class PasswordAction extends Action { + + public ActionForward execute(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + + PasswordChangeActionForm passwordChangeForm = (PasswordChangeActionForm)form; + passwordChangeForm.setLogin(request.getRemoteUser()); + return mapping.findForward("passwordChange"); + } +} Index: lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java =================================================================== diff -u -rde1940e60766f8901436c6ab567c692685d5b35c -r0c587b087e83262e1742ed26a14a8d1d8fbe4656 --- lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java (.../PasswordChangeAction.java) (revision de1940e60766f8901436c6ab567c692685d5b35c) +++ lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java (.../PasswordChangeAction.java) (revision 0c587b087e83262e1742ed26a14a8d1d8fbe4656) @@ -27,31 +27,30 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.lamsfoundation.lams.usermanagement.service.UserManagementService; - -import org.springframework.web.context.support.WebApplicationContextUtils; -import org.springframework.web.context.WebApplicationContext; - - import org.apache.log4j.Logger; -import org.apache.struts.action.ActionMessage; -import org.apache.struts.action.ActionMessages; -import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.apache.struts.action.Action; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.util.HashUtil; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; /** * @author Fei Yang * * @struts:action path="/passwordChanged" * name="PasswordChangeActionForm" + * scope="request" * input=".passwordChange" - * validate="true" + * validate="false" * * @struts:action-forward name="okay" path=".passwordChangeOk" - * @struts:action-forward name="cancelled" path="/index.jsp" + * @struts:action-forward name="cancelled" path="/profile.do?method=view" */ public class PasswordChangeAction extends Action { @@ -77,8 +76,8 @@ } - ActionErrors errors = new ActionErrors(); - + ActionMessages errors = new ActionMessages(); + PasswordChangeActionForm passwordChangeForm = (PasswordChangeActionForm) form; if (errors.isEmpty()) @@ -89,24 +88,35 @@ String login = passwordChangeForm.getLogin(); String oldPassword = passwordChangeForm.getOldPassword(); String password = passwordChangeForm.getPassword(); + String passwordConfirm = passwordChangeForm.getPasswordConfirm(); if ( loggedInUser == null || ! loggedInUser.equals(login) ) { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.authorisation")); } else { - - WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession(true).getServletContext()); + //WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession(true).getServletContext()); + WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServlet().getServletContext()); UserManagementService service = (UserManagementService)ctx.getBean("userManagementServiceTarget"); - if(!service.getUserByLogin(login).getPassword().equals(oldPassword)) + + User user = service.getUserByLogin(login); + if(!user.getPassword().equals(HashUtil.sha1(oldPassword))) { errors.add("oldPassword", new ActionMessage("error.oldpassword.mismatch")); + log.debug("old pass wrong"); } - else + if(password == null || password.length() == 0 || !password.equals(passwordConfirm)) { - service.updatePassword(login, password ); + errors.add("password", new ActionMessage("error.newpassword.mismatch")); + log.debug("new pass wrong"); } + if (errors.isEmpty()) + { + //service.updatePassword(login, HashUtil.sha1(password)); + user.setPassword(HashUtil.sha1(password)); + service.save(user); + } } } catch (Exception e) { @@ -118,15 +128,17 @@ // -- Report any errors if (!errors.isEmpty()) { - addErrors(request, errors); + saveErrors(request,errors); if (mapping.getInput()!=null) { passwordChangeForm.reset(mapping,request); - return (new ActionForward(mapping.getInput())); + //return (new ActionForward(mapping.getInput())); + return (mapping.getInputForward()); } // If no input page, use error forwarding - return (mapping.findForward("error")); + return (mapping.findForward("error.system")); } + return mapping.findForward("okay"); } Index: lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeActionForm.java =================================================================== diff -u -rde1940e60766f8901436c6ab567c692685d5b35c -r0c587b087e83262e1742ed26a14a8d1d8fbe4656 --- lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeActionForm.java (.../PasswordChangeActionForm.java) (revision de1940e60766f8901436c6ab567c692685d5b35c) +++ lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeActionForm.java (.../PasswordChangeActionForm.java) (revision 0c587b087e83262e1742ed26a14a8d1d8fbe4656) @@ -27,8 +27,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.apache.struts.action.ActionMessage; -import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; @@ -44,8 +42,6 @@ public static final String formName = "PasswordChangeActionForm"; // must match name in @struts:action section above - private static Logger log = Logger.getLogger(PasswordChangeActionForm.class); - private String oldPassword; private String password; @@ -131,38 +127,4 @@ setPasswordConfirm(null); } - /** - * Validate the properties that have been set from this HTTP request, - * and return an ActionErrors object that encapsulates any - * validation errors that have been found. If no errors are found, return - * null or an ActionErrors object with no - * recorded error messages. - *

- * @param mapping The mapping used to select this instance - * @param request The servlet request we are processing - */ - public ActionErrors validate(ActionMapping mapping, - HttpServletRequest request) { - ActionErrors errors = super.validate(mapping, request); - - if (errors == null) - errors = new ActionErrors(); - - if (getPassword() == null || getPassword().length() == 0 - || !getPassword().equals(getPasswordConfirm())) { - errors.add("password", new ActionMessage("error.newpassword.mismatch")); - } - - if (errors.isEmpty()) - return null; - else { - // don't want to pass back what they had as the password - setOldPassword(null); - setPassword(null); - setPasswordConfirm(null); - return errors; - } - - } - } \ No newline at end of file Index: lams_central/web/passwordChangeContent.jsp =================================================================== diff -u -r7a1f51f64555f4cd94274847196373c7f9f549f0 -r0c587b087e83262e1742ed26a14a8d1d8fbe4656 --- lams_central/web/passwordChangeContent.jsp (.../passwordChangeContent.jsp) (revision 7a1f51f64555f4cd94274847196373c7f9f549f0) +++ lams_central/web/passwordChangeContent.jsp (.../passwordChangeContent.jsp) (revision 0c587b087e83262e1742ed26a14a8d1d8fbe4656) @@ -8,11 +8,11 @@

-

+

+ + +
- + : @@ -21,31 +21,35 @@
- + :
- + :
- + :
+   + +
-

  -