From 3eb1bd18bdb3d770be6abf203462935607c80554 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Tue, 14 Jan 2025 16:52:53 +0100 Subject: [PATCH] Check that the email isn't used during the registration process --- crates/handlers/src/views/register/password.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/handlers/src/views/register/password.rs b/crates/handlers/src/views/register/password.rs index 55ae7f45d..6853f43c9 100644 --- a/crates/handlers/src/views/register/password.rs +++ b/crates/handlers/src/views/register/password.rs @@ -25,7 +25,7 @@ use mas_policy::Policy; use mas_router::UrlBuilder; use mas_storage::{ queue::{QueueJobRepositoryExt as _, SendEmailAuthenticationCodeJob}, - user::{UserEmailRepository, UserRepository}, + user::{UserEmailFilter, UserEmailRepository, UserRepository}, BoxClock, BoxRepository, BoxRng, RepositoryAccess, }; use mas_templates::{ @@ -194,6 +194,13 @@ pub(crate) async fn post( state.add_error_on_field(RegisterFormField::Email, FieldError::Required); } else if Address::from_str(&form.email).is_err() { state.add_error_on_field(RegisterFormField::Email, FieldError::Invalid); + } else if repo + .user_email() + .count(UserEmailFilter::new().for_email(&form.email)) + .await? + > 0 + { + state.add_error_on_field(RegisterFormField::Email, FieldError::Exists); } if form.password.is_empty() {