diff --git a/ccm-core/src/com/arsdigita/ui/login/ChangePasswordForm.java b/ccm-core/src/com/arsdigita/ui/login/ChangePasswordForm.java index 765a6f0b9..371eef079 100755 --- a/ccm-core/src/com/arsdigita/ui/login/ChangePasswordForm.java +++ b/ccm-core/src/com/arsdigita/ui/login/ChangePasswordForm.java @@ -44,43 +44,44 @@ import com.arsdigita.web.Web; import com.arsdigita.web.URL; import com.arsdigita.web.ReturnSignal; import com.arsdigita.kernel.Kernel; +import com.arsdigita.kernel.Party; import com.arsdigita.kernel.User; import com.arsdigita.kernel.UserAuthentication; import com.arsdigita.kernel.security.RecoveryLoginModule; import com.arsdigita.mail.Mail; import com.arsdigita.util.UncheckedWrapperException; +import java.lang.reflect.Array; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; /** * A Form that allows a user to change their password by entering their old - * password, a new password, and a confirmation of their new password. - * Requires that the user is logged in. Requires that new password differ - * from old and meet strong password requirements. If the user is - * recovering from a lost password (UserContext.isRecovering() is true), - * does not require or display the old password parameter and does not - * require that new password differ from old. Mails the user to notify of - * password change. Redirects user to workspace or return_url if set. + * password, a new password, and a confirmation of their new password. Requires + * that the user is logged in. Requires that new password differ from old and + * meet strong password requirements. If the user is recovering from a lost + * password (UserContext.isRecovering() is true), does not require or display + * the old password parameter and does not require that new password differ from + * old. Mails the user to notify of password change. Redirects user to workspace + * or return_url if set. * * @author Sameer Ajmani - **/ + * + */ public class ChangePasswordForm extends Form - implements FormProcessListener, - FormValidationListener { + implements FormProcessListener, + FormValidationListener { public static final String versionId = "$Id: ChangePasswordForm.java 699 2005-08-12 12:35:18Z sskracic $ by $Author: sskracic $, $DateTime: 2004/08/16 18:10:38 $"; private static final Logger s_log = - Logger.getLogger(ChangePasswordForm.class.getName()); - + Logger.getLogger(ChangePasswordForm.class.getName()); final static String CHANGE_PASSWORD_FORM_NAME = "change-password"; final static String OLD_PASSWORD_PARAM_NAME = "old-password"; final static String NEW_PASSWORD_PARAM_NAME = "new-password"; final static String CONFIRM_PASSWORD_PARAM_NAME = "confirm-password"; final static String RETURN_URL_PARAM_NAME = - LoginHelper.RETURN_URL_PARAM_NAME; - + LoginHelper.RETURN_URL_PARAM_NAME; private UserAuthenticationListener m_listener = - new UserAuthenticationListener(); + new UserAuthenticationListener(); private Hidden m_returnURL; private Hidden m_recovery; private Label m_oldPasswordLabel; @@ -96,13 +97,14 @@ public class ChangePasswordForm extends Form super.register(p); p.addRequestListener(m_listener); p.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - PageState state = e.getPageState(); - boolean visible = !isRecovering(); - m_oldPasswordLabel.setVisible(state, visible); - m_oldPassword.setVisible(state, visible); - } - }); + + public void actionPerformed(ActionEvent e) { + PageState state = e.getPageState(); + boolean visible = !isRecovering(); + m_oldPasswordLabel.setVisible(state, visible); + m_oldPassword.setVisible(state, visible); + } + }); } public ChangePasswordForm(Container panel) { @@ -113,8 +115,7 @@ public class ChangePasswordForm extends Form addProcessListener(this); // save the recovery credential as a hidden parameter - m_recovery = new Hidden(new StringParameter - (RecoveryLoginModule.getParamName())); + m_recovery = new Hidden(new StringParameter(RecoveryLoginModule.getParamName())); m_recovery.setPassIn(true); add(m_recovery); @@ -123,10 +124,28 @@ public class ChangePasswordForm extends Form m_returnURL.setPassIn(true); add(m_returnURL); + + Party party = Kernel.getContext().getParty(); + + if (party != null && party instanceof User) { + User user = (User) party; + user.getPersonName().toString(); + + // Add a describtive text and the user name to the form for user comfort + Label greeting = new Label( + LoginHelper.getMessage("login.changePasswortForm.greeting", + new Object[] { user.getPersonName().toString() } ) + ); + + greeting.setFontWeight(Label.BOLD); + greeting.setClassAttr("greeting"); + add(greeting); + } + + add(new Label(LoginHelper.getMessage("login.changePasswortForm.introText"))); + // old password - m_oldPasswordLabel = new Label - (LoginHelper.getMessage - ("login.changePasswordForm.oldPasswordLabel")); + m_oldPasswordLabel = new Label(LoginHelper.getMessage("login.changePasswordForm.oldPasswordLabel")); add(m_oldPasswordLabel); m_oldPassword = new Password(OLD_PASSWORD_PARAM_NAME); // don't use NotNullValidationListener because @@ -134,93 +153,79 @@ public class ChangePasswordForm extends Form add(m_oldPassword); // new password - Object[] params = new Object[] { - new Integer(PasswordValidationListener.MIN_LENGTH) }; - add(new Label(LoginHelper.getMessage - ("login.changePasswordForm.newPasswordLabel", params))); + Object[] params = new Object[]{ + new Integer(PasswordValidationListener.MIN_LENGTH)}; + add(new Label(LoginHelper.getMessage("login.changePasswordForm.newPasswordLabel", params))); m_newPassword = new Password(NEW_PASSWORD_PARAM_NAME); - m_newPassword.addValidationListener - (new PasswordValidationListener()); + m_newPassword.addValidationListener(new PasswordValidationListener()); add(m_newPassword); // confirm new password - add(new Label(LoginHelper.getMessage - ("login.changePasswordForm.confirmPasswordLabel"))); + add(new Label(LoginHelper.getMessage("login.changePasswordForm.confirmPasswordLabel"))); m_confirmPassword = new Password(CONFIRM_PASSWORD_PARAM_NAME); // don't use PasswordValidationListener to avoid duplicate errors - m_confirmPassword.addValidationListener - (new NotNullValidationListener()); + m_confirmPassword.addValidationListener(new NotNullValidationListener()); add(m_confirmPassword); // submit - add(new Submit(LoginHelper.getMessage - ("login.changePasswordForm.submit")), - ColumnPanel.CENTER | ColumnPanel.FULL_WIDTH); + add(new Submit(LoginHelper.getMessage("login.changePasswordForm.submit")), + ColumnPanel.CENTER | ColumnPanel.FULL_WIDTH); } public void validate(FormSectionEvent event) - throws FormProcessException { + throws FormProcessException { PageState state = event.getPageState(); FormData data = event.getFormData(); try { // get user object if (!m_listener.isLoggedIn(state)) { // this error should never appear - data.addError(LoginHelper.localize - ("login.changePasswordForm.noUserError", - state.getRequest())); + data.addError(LoginHelper.localize("login.changePasswordForm.noUserError", + state.getRequest())); return; } User user = m_listener.getUser(state); // get parameter values - String oldPassword = (String)m_oldPassword.getValue(state); - String newPassword = (String)m_newPassword.getValue(state); - String confirmPassword = (String) - m_confirmPassword.getValue(state); + String oldPassword = (String) m_oldPassword.getValue(state); + String newPassword = (String) m_newPassword.getValue(state); + String confirmPassword = (String) m_confirmPassword.getValue(state); // check old password unless recovering if (!isRecovering()) { try { // The old password can never be null or contain leading or // trailing slashes. - if (oldPassword == null || - !oldPassword.trim().equals(oldPassword)) { - data.addError - (OLD_PASSWORD_PARAM_NAME, LoginHelper.localize - ("login.changePasswordForm.badPasswordError", - state.getRequest())); + if (oldPassword == null + || !oldPassword.trim().equals(oldPassword)) { + data.addError(OLD_PASSWORD_PARAM_NAME, LoginHelper.localize("login.changePasswordForm.badPasswordError", + state.getRequest())); return; } // TODO: avoid loading UserAuthentication in both // validate() and process() stages UserAuthentication auth = - UserAuthentication.retrieveForUser(user); + UserAuthentication.retrieveForUser(user); if (!auth.isValidPassword(oldPassword)) { - data.addError - (OLD_PASSWORD_PARAM_NAME, LoginHelper.localize - ("login.changePasswordForm.badPasswordError", - state.getRequest())); + data.addError(OLD_PASSWORD_PARAM_NAME, LoginHelper.localize("login.changePasswordForm.badPasswordError", + state.getRequest())); return; } } catch (DataObjectNotFoundException e) { - throw new UncheckedWrapperException - ("Could not get UserAuthentication", e); + throw new UncheckedWrapperException("Could not get UserAuthentication", e); } } // check new password if (newPassword.equals(oldPassword)) { - data.addError(NEW_PASSWORD_PARAM_NAME, LoginHelper.localize - ("login.changePasswordForm.mustDifferError", - state.getRequest())); + data.addError(NEW_PASSWORD_PARAM_NAME, LoginHelper.localize("login.changePasswordForm.mustDifferError", + state.getRequest())); return; } if (!newPassword.equals(confirmPassword)) { - data.addError(CONFIRM_PASSWORD_PARAM_NAME, LoginHelper.localize - ("login.changePasswordForm.mustMatchError", - state.getRequest())); + data.addError(CONFIRM_PASSWORD_PARAM_NAME, LoginHelper.localize("login.changePasswordForm.mustMatchError", + state.getRequest())); return; } } finally { @@ -234,16 +239,15 @@ public class ChangePasswordForm extends Form } public void process(FormSectionEvent event) - throws FormProcessException { + throws FormProcessException { PageState state = event.getPageState(); FormData data = event.getFormData(); // get user object if (!m_listener.isLoggedIn(state)) { // this error should never appear (checked in validate) - data.addError(LoginHelper.localize - ("login.changePasswordForm.noUserError", - state.getRequest())); + data.addError(LoginHelper.localize("login.changePasswordForm.noUserError", + state.getRequest())); return; } User user = m_listener.getUser(state); @@ -251,14 +255,13 @@ public class ChangePasswordForm extends Form // set new password try { UserAuthentication auth = - UserAuthentication.retrieveForUser(user); - String newPassword = (String)m_newPassword.getValue(state); + UserAuthentication.retrieveForUser(user); + String newPassword = (String) m_newPassword.getValue(state); auth.setPassword(newPassword); s_log.debug("committing password change"); auth.save(); } catch (DataObjectNotFoundException e) { - throw new UncheckedWrapperException - ("Could not get UserAuthentication", e); + throw new UncheckedWrapperException("Could not get UserAuthentication", e); } // mail report to user @@ -268,17 +271,17 @@ public class ChangePasswordForm extends Form HttpServletRequest req = state.getRequest(); String to = - user.getPrimaryEmail().toString(); + user.getPrimaryEmail().toString(); String from = - Kernel.getSecurityConfig().getAdminContactEmail(); + Kernel.getSecurityConfig().getAdminContactEmail(); String name = - user.getPersonName().getGivenName(); + user.getPersonName().getGivenName(); String subject = - LoginHelper.localize("login.changePasswordForm.mailSubject", req); + LoginHelper.localize("login.changePasswordForm.mailSubject", req); String body = - LoginHelper.localize("login.changePasswordForm.mailBody", - new Object[] { name }, - req); + LoginHelper.localize("login.changePasswordForm.mailBody", + new Object[]{name}, + req); // try to send the message, but don't throw the exception // if it fails so that the password change is comitted @@ -290,9 +293,9 @@ public class ChangePasswordForm extends Form s_log.error("Could not notify user of password change", e); } } else { - s_log.debug("Could not notify user of password change: " + - "null email, user ID: " + - user.getID()); + s_log.debug("Could not notify user of password change: " + + "null email, user ID: " + + user.getID()); } final HttpServletRequest req = state.getRequest(); diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginResources.properties b/ccm-core/src/com/arsdigita/ui/login/LoginResources.properties index d20483565..3210ba731 100644 --- a/ccm-core/src/com/arsdigita/ui/login/LoginResources.properties +++ b/ccm-core/src/com/arsdigita/ui/login/LoginResources.properties @@ -60,3 +60,5 @@ login.error.badAnswer=Incorrect answer login.error.badEmail=Unrecognized email address login.error.bannedEmail=User cannot currently access system login.error.loginFail=Login failed +login.changePasswortForm.greeting=Welcome {0} +login.changePasswortForm.introText=To change your passwort please fill out this form. diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginResources_de.properties b/ccm-core/src/com/arsdigita/ui/login/LoginResources_de.properties index 90b614e57..935591644 100644 --- a/ccm-core/src/com/arsdigita/ui/login/LoginResources_de.properties +++ b/ccm-core/src/com/arsdigita/ui/login/LoginResources_de.properties @@ -1,10 +1,10 @@ login.userEditPage.title=Profil bearbeiten -login.userEditPage.changePasswordLink=Passwort \u00E4ndern -login.workspacePage.title=Ihr pers\u00F6nlicher Bereich +login.userEditPage.changePasswordLink=Passwort \u00e4ndern +login.workspacePage.title=Ihr pers\u00f6nlicher Bereich login.explainCookiesPage.title=E-Mail Adresse und Passwort werden gesichert login.userInfo.logoutLink=Abmelden login.userInfo.editProfileLink=Profil bearbeiten -login.userInfo.changePasswordLink=Passwort \u00E4ndern +login.userInfo.changePasswordLink=Passwort \u00e4ndern login.userRegistrationForm.title=Anmelden login.userRegistrationForm.email=Ihre E-Mail Adresse\: login.userRegistrationForm.screenName=Ihr Benutzername\: @@ -14,49 +14,51 @@ login.userRegistrationForm.explainCookieLink=(Hilfe) login.userRegistrationForm.forgotPasswordLink=Passwort vergessen? login.userRegistrationForm.newUserRegister=Neue Benutzer registrieren sich hier login.userNewForm.title=Registrieren -login.userNewForm.aboutYouSectionHeader=