diff --git a/src/main/java/de/bps/olat/user/ChangeEMailExecuteController.java b/src/main/java/de/bps/olat/user/ChangeEMailExecuteController.java index 636cba8db558ea72b1745a2a7c97948416af6882..ce46617e96584eb170439e3226e626965d8a867e 100644 --- a/src/main/java/de/bps/olat/user/ChangeEMailExecuteController.java +++ b/src/main/java/de/bps/olat/user/ChangeEMailExecuteController.java @@ -19,7 +19,9 @@ */ package de.bps.olat.user; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; @@ -103,9 +105,13 @@ public class ChangeEMailExecuteController extends ChangeEMailController implemen XStream xml = new XStream(); @SuppressWarnings("unchecked") HashMap<String, String> mails = (HashMap<String, String>) xml.fromXML(tempKey.getEmailAddress()); - Identity ident = UserManager.getInstance().findIdentityByEmail(mails.get("currentEMail")); - if (ident != null) { + + String currentMail = mails.get("currentEMail"); + List<Identity> identities = UserManager.getInstance() + .findIdentitiesByEmail(Collections.singletonList(currentMail)); + if (identities != null && identities.size() == 1) { // change mail address + Identity ident = identities.get(0); ident.getUser().setProperty("email", mails.get("changedEMail")); // if old mail address closed then set the new mail address // unclosed @@ -119,6 +125,9 @@ public class ChangeEMailExecuteController extends ChangeEMailController implemen // remove keys ident.getUser().setProperty("emchangeKey", null); userRequest.getUserSession().removeEntryFromNonClearedStore(ChangeEMailController.CHANGE_EMAIL_ENTRY); + } else { + // error message + wControl.setWarning(pT.translate("error.change.email.unexpected", new String[] { mails.get("currentEMail"), mails.get("changedEMail") })); } // delete registration key rm.deleteTemporaryKeyWithId(tempKey.getRegistrationKey()); diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties index 1db12993019523310d791b1a4287a2d36c129fbb..9609cbee6fcfc2d367e64dc82fd519c60e7468b5 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties @@ -18,6 +18,7 @@ email.change.wherefrom=Diese Anfrage an den Server {0} wurde am {1} \nvon der IP email.notsent=Die E-Mail konnte nicht versendet werden. email.sent=Die E-Mail wurde erfolgreich versendet. error.change.email=Dieser Aktivierungs-Link wurde bereits verwendet und ist somit nicht mehr g\u00FCltig. +error.change.email.unexpected=Ihre E-Mail Adresse konnte nicht ge\u00C4ndert werden. Ein unerwarteter Fehler ist aufgetreten. error.change.email.time=Dieser Aktivierungs-Link hat eine G\u00FCltigkeitsdauer von {0} Stunden und ist somit nicht mehr g\u00FCltig. error.no.props.found=Es wurden keine Properties f\u00FCr diesen Benutzer gefunden error.password.empty=Geben Sie Ihr bisheriges Passwort an diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties index a69b8502dc3bb1734c744b0b046acd0cba527926..86b7a6f281cd825a60f4bde637f28841759953d4 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties @@ -19,6 +19,7 @@ email.notsent=This E-mail could not be sent. email.sent=E-mail sent successfully. error.change.email=This activating link has already been used and is therefore invalid. error.change.email.time=This activating link can only be used for {0} hrs and is therefore invalid. +error.change.email.unexpected=Your E-mail could not be changed. An unexpected server error occurred. error.no.props.found=No properties found for this user error.password.empty=Please indicate your previous password error.password.noauth=Your previous password is inaccurate