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() {