Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ImportV1ContentsSaveAction.java =================================================================== diff -u -rcf0e3185edf06ead86c05ec60d89430671407ca1 -r1125429dcf0682dda1af205394643f047764ba88 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ImportV1ContentsSaveAction.java (.../ImportV1ContentsSaveAction.java) (revision cf0e3185edf06ead86c05ec60d89430671407ca1) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ImportV1ContentsSaveAction.java (.../ImportV1ContentsSaveAction.java) (revision 1125429dcf0682dda1af205394643f047764ba88) @@ -243,6 +243,7 @@ // password must be sha1'ed, not md5'ed as in v1; so we use the login as the password newUser.setPassword(HashUtil.sha1(user.getLogin())); + newUser.setChangePassword(true); String flashName = Configuration.get(ConfigurationKeys.DEFAULT_FLASH_THEME); List list = service.findByProperty(CSSThemeVisualElement.class, "name", flashName); Index: lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java =================================================================== diff -u -reaa3076ae7e2216e6ec724be5f8678ce7cb43a3d -r1125429dcf0682dda1af205394643f047764ba88 --- lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision eaa3076ae7e2216e6ec724be5f8678ce7cb43a3d) +++ lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision 1125429dcf0682dda1af205394643f047764ba88) @@ -97,6 +97,12 @@ setAdminLinks(request); } + // check if user is flagged as needing to change their password + User loggedInUser = getService().getUserByLogin(request.getRemoteUser()); + if (loggedInUser.getChangePassword()) { + return mapping.findForward("password"); + } + String tab = WebUtil.readStrParam(request, "tab", true); if (StringUtils.equals(tab, "profile")) { return mapping.findForward("profile"); Index: lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java =================================================================== diff -u -re3bc6fc68e7c64c4771a1f9a3056e4d750bea26d -r1125429dcf0682dda1af205394643f047764ba88 --- lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java (.../PasswordChangeAction.java) (revision e3bc6fc68e7c64c4771a1f9a3056e4d750bea26d) +++ lams_central/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java (.../PasswordChangeAction.java) (revision 1125429dcf0682dda1af205394643f047764ba88) @@ -119,6 +119,7 @@ { //service.updatePassword(login, HashUtil.sha1(password)); user.setPassword(HashUtil.sha1(password)); + user.setChangePassword(false); service.save(user); // make 'password changed' audit log entry Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml =================================================================== diff -u -r2f61f38a5a1acbb2fc8df5316d7b20617b08c9bb -r1125429dcf0682dda1af205394643f047764ba88 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml (.../User.hbm.xml) (revision 2f61f38a5a1acbb2fc8df5316d7b20617b08c9bb) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml (.../User.hbm.xml) (revision 1125429dcf0682dda1af205394643f047764ba88) @@ -473,5 +473,20 @@ length="20" + + + + @hibernate.property + column="change_password" + length="1" + not-null="true" + + Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java =================================================================== diff -u -rcd9fc65bb8a954f1cb28d77cc111924c186cd055 -r1125429dcf0682dda1af205394643f047764ba88 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision cd9fc65bb8a954f1cb28d77cc111924c186cd055) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision 1125429dcf0682dda1af205394643f047764ba88) @@ -147,8 +147,11 @@ /** persistent field */ private Long portraitUuid; + /** persistent field */ + private Boolean changePassword; + /** full constructor */ - public User(String login, String password, String title, String firstName, String lastName, String addressLine1, String addressLine2, String addressLine3, String city, String state, String postcode, String country, String dayPhone, String eveningPhone, String mobilePhone, String fax, String email, Boolean disabledFlag, Date createDate, Workspace workspace, AuthenticationMethod authenticationMethod, CSSThemeVisualElement flashTheme, CSSThemeVisualElement htmlTheme, Set userOrganisations, String chatId, Set learnerProgresses, Set userToolSessions, Set userGroups, Set learningDesigns, Set lessons, Long portraitUuid) { + public User(String login, String password, String title, String firstName, String lastName, String addressLine1, String addressLine2, String addressLine3, String city, String state, String postcode, String country, String dayPhone, String eveningPhone, String mobilePhone, String fax, String email, Boolean disabledFlag, Date createDate, Workspace workspace, AuthenticationMethod authenticationMethod, CSSThemeVisualElement flashTheme, CSSThemeVisualElement htmlTheme, Set userOrganisations, String chatId, Set learnerProgresses, Set userToolSessions, Set userGroups, Set learningDesigns, Set lessons, Long portraitUuid, Boolean changePassword) { this.login = login; this.password = password; this.title = title; @@ -180,6 +183,7 @@ this.learningDesigns = learningDesigns; this.lessons = lessons; this.portraitUuid = portraitUuid; + this.changePassword = changePassword; } /** default constructor */ @@ -810,4 +814,19 @@ public void setPortraitUuid(Long portraitUuid) { this.portraitUuid = portraitUuid; } + + /** + * @hibernate.property + * column="change_password" + * length="1" + * not-null="true" + * + */ + public Boolean getChangePassword() { + return this.changePassword; + } + + public void setChangePassword(Boolean changePassword) { + this.changePassword = changePassword; + } }