diff --git a/administration/src/bp-modules/auth/ForgotPasswordController.tsx b/administration/src/bp-modules/auth/ForgotPasswordController.tsx index 03ce1792b..0399c0346 100644 --- a/administration/src/bp-modules/auth/ForgotPasswordController.tsx +++ b/administration/src/bp-modules/auth/ForgotPasswordController.tsx @@ -42,8 +42,8 @@ const ForgotPasswordController = () => { {finished ? ( <>
- Wir haben eine E-Mail an {email} gesendet. Darin finden Sie einen Link, mit dem Sie Ihr Passwort - zurücksetzen können. + Falls die angegebene E-Mail-Adresse {email} in unserem System existiert, wird eine E-Mail an sie gesendet. + Darin finden Sie einen Link, mit dem Sie Ihr Passwort zurücksetzen können.
Bitte prüfen Sie Ihren Spam-Ordner.
diff --git a/backend/src/main/kotlin/app/ehrenamtskarte/backend/auth/webservice/schema/ResetPasswordMutationService.kt b/backend/src/main/kotlin/app/ehrenamtskarte/backend/auth/webservice/schema/ResetPasswordMutationService.kt index da6997c77..b38897e2c 100644 --- a/backend/src/main/kotlin/app/ehrenamtskarte/backend/auth/webservice/schema/ResetPasswordMutationService.kt +++ b/backend/src/main/kotlin/app/ehrenamtskarte/backend/auth/webservice/schema/ResetPasswordMutationService.kt @@ -25,11 +25,13 @@ class ResetPasswordMutationService { val projectConfig = backendConfig.projects.first { it.id == project } transaction { val user = Administrators.innerJoin(Projects).slice(Administrators.columns) - .select((Projects.project eq project) and (LowerCase(Administrators.email) eq email.lowercase())) - .single().let { AdministratorEntity.wrapRow(it) } - - val key = AdministratorsRepository.setNewPasswordResetKey(user) - Mailer.sendResetPasswodMail(backendConfig, projectConfig, key, email) + .select((Projects.project eq project) and (LowerCase(Administrators.email) eq email.lowercase())and (Administrators.deleted eq false)) + .singleOrNull()?.let { AdministratorEntity.wrapRow(it) } + // We don't send error messages for empty collection to the user to avoid scraping of mail addresses + if (user != null) { + val key = AdministratorsRepository.setNewPasswordResetKey(user) + Mailer.sendResetPasswodMail(backendConfig, projectConfig, key, email) + } } return true } @@ -38,7 +40,7 @@ class ResetPasswordMutationService { fun resetPassword(project: String, email: String, passwordResetKey: String, newPassword: String): Boolean { transaction { val user = Administrators.innerJoin(Projects).slice(Administrators.columns) - .select((Projects.project eq project) and (LowerCase(Administrators.email) eq email.lowercase())) + .select((Projects.project eq project) and (LowerCase(Administrators.email) eq email.lowercase()) and (Administrators.deleted eq false)) .single().let { AdministratorEntity.wrapRow(it) } if (user.passwordResetKeyExpiry!!.isBefore(Instant.now())) {