fix(relay-server): send email verification at login

This commit is contained in:
Henri Bourcereau 2026-05-24 20:49:17 +02:00
parent 91981e6872
commit 29a9c9b0a9

View file

@ -245,6 +245,7 @@ async fn register(
async fn login( async fn login(
mut auth_session: AuthSession<AuthBackend>, mut auth_session: AuthSession<AuthBackend>,
State(state): State<Arc<AppState>>,
Json(body): Json<LoginBody>, Json(body): Json<LoginBody>,
) -> Result<impl IntoResponse, AppError> { ) -> Result<impl IntoResponse, AppError> {
let creds = Credentials { let creds = Credentials {
@ -260,6 +261,18 @@ async fn login(
auth_session.login(&user).await.map_err(|_| AppError::Internal)?; auth_session.login(&user).await.map_err(|_| AppError::Internal)?;
if !user.email_verified {
let _ = db::delete_email_tokens(&state.db, user.id, "verify").await;
let token = generate_token();
let expires_at = now_unix() + VERIFY_TOKEN_EXPIRY;
if db::create_email_token(&state.db, user.id, &token, "verify", expires_at)
.await
.is_ok()
{
state.mailer.send_verification(&user.email, &token).await;
}
}
Ok(Json(MeResponse { Ok(Json(MeResponse {
id: user.id, id: user.id,
username: user.username, username: user.username,