Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r2fbf5cd0355af8ea46cf304ba448431486c79b77 -r1e56f3aea99f6dd9c95b548e73d4696a992c25d7 --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 2fbf5cd0355af8ea46cf304ba448431486c79b77) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 1e56f3aea99f6dd9c95b548e73d4696a992c25d7) @@ -530,7 +530,7 @@ admin.org.password.change.title =Reset password for course members admin.org.password.change.button =Password reset admin.org.password.change.is.staff =Authors/monitors -admin.org.password.change.is.learners =Students +admin.org.password.change.is.learner =Students admin.org.password.change.generate =Generate new password admin.org.password.change.email =Email new password admin.org.password.change.force =Force change password after login @@ -540,5 +540,8 @@ admin.org.password.change.grid.email =Email admin.org.password.change.grid.error.load =Error while loading users into grid admin.org.password.change.choose =Change password for - +admin.org.password.change.submit =Change password +admin.org.password.change.error.prefix.staff =Authors/monitors password +admin.org.password.change.error.prefix.learners =Authors/monitors password +admin.org.password.change.success =Passwords successfully changed #======= End labels: Exported 511 labels for en AU ===== Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/OrgPasswordChangeAction.java =================================================================== diff -u -ra031d818f691be81b838500d20f61a17f257e7f9 -r1e56f3aea99f6dd9c95b548e73d4696a992c25d7 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/OrgPasswordChangeAction.java (.../OrgPasswordChangeAction.java) (revision a031d818f691be81b838500d20f61a17f257e7f9) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/OrgPasswordChangeAction.java (.../OrgPasswordChangeAction.java) (revision 1e56f3aea99f6dd9c95b548e73d4696a992c25d7) @@ -24,6 +24,7 @@ package org.lamsfoundation.lams.admin.web.action; import java.io.IOException; +import java.security.InvalidParameterException; import java.util.List; import javax.servlet.http.HttpServletRequest; @@ -44,8 +45,10 @@ import org.lamsfoundation.lams.integration.security.RandomPasswordGenerator; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.ValidationUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -67,7 +70,7 @@ passForm.set("staffPass", RandomPasswordGenerator.nextPasswordValidated()); passForm.set("learnerPass", RandomPasswordGenerator.nextPasswordValidated()); - return mapping.findForward("start"); + return mapping.findForward("display"); } public ActionForward generatePassword(ActionMapping mapping, ActionForm form, HttpServletRequest request, @@ -141,8 +144,46 @@ return null; } + public ActionForward changePassword(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, JSONException { + UserDTO userDTO = getUserDTO(); + Integer currentUserId = userDTO.getUserID(); + if (!AdminServiceProxy.getSecurityService(getServlet().getServletContext()).isSysadmin(currentUserId, + "org password change", false)) { + String warning = "User " + currentUserId + " is not a sysadmin"; + log.warn(warning); + response.sendError(HttpServletResponse.SC_FORBIDDEN, warning); + return null; + } + + DynaActionForm passForm = (DynaActionForm) form; + Integer organisationID = (Integer) passForm.get(AttributeNames.PARAM_ORGANISATION_ID); + Boolean email = (Boolean) passForm.get("email"); + Boolean force = (Boolean) passForm.get("force"); + + Boolean isStaffChange = (Boolean) passForm.get("isStaffChange"); + Boolean isLearnerChange = (Boolean) passForm.get("isLearnerChange"); + if (isStaffChange) { + JSONArray excludedStaff = new JSONArray((String) passForm.get("excludedStaff")); + String staffPass = (String) passForm.get("staffPass"); + } + if (isLearnerChange) { + JSONArray excludedLearners = new JSONArray((String) passForm.get("excludedLearners")); + String learnerPass = (String) passForm.get("learnerPass"); + } + + request.setAttribute("success", true); + return mapping.findForward("display"); + } + + private void changePassword(String password, List users, boolean force, boolean email) { + if (!ValidationUtil.isPasswordValueValid(password, password)) { + throw new InvalidParameterException("Password does not pass validation"); + } + } + private UserDTO getUserDTO() { HttpSession ss = SessionManager.getSession(); return (UserDTO) ss.getAttribute(AttributeNames.USER); } -} +} \ No newline at end of file Index: lams_admin/web/WEB-INF/struts-config.xml =================================================================== diff -u -r0e955e705ea94a190c4ebaff89c8498ee795d612 -r1e56f3aea99f6dd9c95b548e73d4696a992c25d7 --- lams_admin/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 0e955e705ea94a190c4ebaff89c8498ee795d612) +++ lams_admin/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 1e56f3aea99f6dd9c95b548e73d4696a992c25d7) @@ -974,7 +974,7 @@ parameter="method" > Index: lams_admin/web/orgPasswordChange.jsp =================================================================== diff -u -r2fbf5cd0355af8ea46cf304ba448431486c79b77 -r1e56f3aea99f6dd9c95b548e73d4696a992c25d7 --- lams_admin/web/orgPasswordChange.jsp (.../orgPasswordChange.jsp) (revision 2fbf5cd0355af8ea46cf304ba448431486c79b77) +++ lams_admin/web/orgPasswordChange.jsp (.../orgPasswordChange.jsp) (revision 1e56f3aea99f6dd9c95b548e73d4696a992c25d7) @@ -1,8 +1,7 @@ <%@ include file="/taglibs.jsp"%> -<%@ taglib uri="tags-lams" prefix="lams"%> + <%@ page import="org.lamsfoundation.lams.util.Configuration"%> <%@ page import="org.lamsfoundation.lams.util.ConfigurationKeys"%> -<%@ page import="org.apache.struts.action.ActionMessages"%> <%=Configuration.get(ConfigurationKeys.PASSWORD_POLICY_MINIMUM_CHARACTERS)%> <%=Configuration.get(ConfigurationKeys.PASSWORD_POLICY_UPPERCASE)%> <%=Configuration.get(ConfigurationKeys.PASSWORD_POLICY_NUMERICS)%> @@ -51,6 +50,11 @@ .ui-jqgrid-btable tr.success > td { background-color: transparent !important; } + + #formValidationErrors { + display: none; + text-align: center; + } @@ -120,18 +124,17 @@ // Setup form validation $("#OrgPasswordChangeForm").validate({ - debug : true, - errorClass : 'help-block', - // validation rules + errorLabelContainer : '#formValidationErrors', + errorClass : 'errorMessage', rules : { - learnerPassword : { + learnerPass : { required: false, minlength : , maxlength : 25, charactersAllowed : true, pwcheck : true }, - staffPassword: { + staffPass: { required: false, minlength : , maxlength : 25, @@ -143,24 +146,26 @@ // Specify the validation error messages messages : { - learnerPassword : { + learnerPass : { required : "", - minlength : "", - maxlength : "", + minlength : " ", + maxlength : " ", charactersAllowed : " ` ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] \ | : ; \" ' < > , . ? /", pwcheck : "" }, - staffPassword: { + staffPass: { required : "", - minlength : "", - maxlength : "", + minlength : " ", + maxlength : " ", charactersAllowed : " ` ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] \ | : ; \" ' < > , . ? /", pwcheck : "" } }, submitHandler : function(form) { + $('#excludedLearners').val(JSON.stringify(excludedLearners)); + $('#excludedStaff').val(JSON.stringify(excludedStaff)); form.submit(); } }); @@ -188,9 +193,9 @@ ], colModel : [ { - 'name' : 'name', - 'index' : 'firstName', - 'title' : false + 'name' : 'name', + 'index' : 'firstName', + 'title' : false }, { 'name' : 'login', @@ -251,48 +256,45 @@

-
-
-

- - : -
    +
    +

    + + + : +
      +
    • + +
    • + +
    • - -
    • + key='label.password.must.ucase' /> +
      + +
    • +
      - -
    • -
      - -
    • -
      + +
    • +
      - -
    • -
      - - -
    • -
      -
    - -
    - - - - -
    -
    -
    -
    + +
  • +
    +
+
+ + + + + +
+ + + +

+
+
+ +
+
    +

    @@ -326,7 +338,7 @@
    -
    -
    \ No newline at end of file +
    + +
    + + \ No newline at end of file Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -ra031d818f691be81b838500d20f61a17f257e7f9 -r1e56f3aea99f6dd9c95b548e73d4696a992c25d7 Binary files differ