|
@ -292,19 +292,24 @@ fn invite_user(data: Json<InviteData>, _token: AdminToken, conn: DbConn) -> Json |
|
|
let data: InviteData = data.into_inner(); |
|
|
let data: InviteData = data.into_inner(); |
|
|
let email = data.email.clone(); |
|
|
let email = data.email.clone(); |
|
|
if User::find_by_mail(&data.email, &conn).is_some() { |
|
|
if User::find_by_mail(&data.email, &conn).is_some() { |
|
|
err!("User already exists") |
|
|
err_code!("User already exists", Status::Conflict.code) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
let mut user = User::new(email); |
|
|
let mut user = User::new(email); |
|
|
|
|
|
|
|
|
if CONFIG.mail_enabled() { |
|
|
// TODO: After try_blocks is stabilized, this can be made more readable
|
|
|
mail::send_invite(&user.email, &user.uuid, None, None, &CONFIG.invitation_org_name(), None)?; |
|
|
// See: https://github.com/rust-lang/rust/issues/31436
|
|
|
} else { |
|
|
(|| { |
|
|
let invitation = Invitation::new(data.email); |
|
|
if CONFIG.mail_enabled() { |
|
|
invitation.save(&conn)?; |
|
|
mail::send_invite(&user.email, &user.uuid, None, None, &CONFIG.invitation_org_name(), None)?; |
|
|
} |
|
|
} else { |
|
|
|
|
|
let invitation = Invitation::new(data.email); |
|
|
|
|
|
invitation.save(&conn)?; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
user.save(&conn) |
|
|
|
|
|
})().map_err(|e| e.with_code(Status::InternalServerError.code))?; |
|
|
|
|
|
|
|
|
user.save(&conn)?; |
|
|
|
|
|
Ok(Json(user.to_json(&conn))) |
|
|
Ok(Json(user.to_json(&conn))) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|