Check for duplicate email
This commit is contained in:
parent
bce6a85536
commit
4ba4d10fce
@ -29,9 +29,20 @@ pub async fn create_account(
|
||||
return Ok(HttpResponse::BadRequest().json("Size constraints were not respected!"));
|
||||
}
|
||||
|
||||
// TODO : check the mail address
|
||||
// Check if email is already attached to an account
|
||||
match users_service::exists_email(&req.email).await {
|
||||
Ok(false) => {}
|
||||
Ok(true) => {
|
||||
return Ok(HttpResponse::Conflict()
|
||||
.json("An account with the same email address already exists!"));
|
||||
}
|
||||
Err(e) => {
|
||||
log::error!("Failed to check email existence! {}", e);
|
||||
return Err(ErrorInternalServerError(e));
|
||||
}
|
||||
}
|
||||
|
||||
// Create the account
|
||||
// Create the account
|
||||
let user_id = users_service::create_account(&req.name, &req.email)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
|
@ -20,3 +20,15 @@ pub async fn create_account(name: &str, email: &str) -> anyhow::Result<User> {
|
||||
Ok(res)
|
||||
})
|
||||
}
|
||||
|
||||
/// Check if an email address is already associated with an account
|
||||
pub async fn exists_email(email: &str) -> anyhow::Result<bool> {
|
||||
db_connection::execute(|conn| {
|
||||
let count: i64 = users::table
|
||||
.filter(users::email.eq(email))
|
||||
.count()
|
||||
.get_result(conn)?;
|
||||
|
||||
Ok(count != 0)
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user