automatic-deployments #64
2 changed files with 8 additions and 1 deletions
|
@ -30,6 +30,10 @@ async fn login(
|
||||||
.verify_local_user(&login_request.username, &login_request.password)
|
.verify_local_user(&login_request.username, &login_request.password)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
if session.get::<String>("user").is_ok() {
|
||||||
|
return Err(ApiError::AlreadyLoggedIn);
|
||||||
|
}
|
||||||
|
|
||||||
session.insert("user", user_id)?;
|
session.insert("user", user_id)?;
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
Ok(HttpResponse::Ok())
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use actix_web::{cookie::time::error, http::StatusCode, HttpResponse, ResponseError};
|
use actix_web::{HttpResponse, ResponseError, cookie::time::error, http::StatusCode};
|
||||||
use sea_orm::TransactionError;
|
use sea_orm::TransactionError;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@ pub enum ApiError {
|
||||||
Argon2Error(String),
|
Argon2Error(String),
|
||||||
#[error("Session insert error: {0}")]
|
#[error("Session insert error: {0}")]
|
||||||
SessionInsertError(#[from] actix_session::SessionInsertError),
|
SessionInsertError(#[from] actix_session::SessionInsertError),
|
||||||
|
#[error("Already logged in")]
|
||||||
|
AlreadyLoggedIn,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ResponseError for ApiError {
|
impl ResponseError for ApiError {
|
||||||
|
@ -30,6 +32,7 @@ impl ResponseError for ApiError {
|
||||||
ApiError::ValidationError(..) => StatusCode::BAD_REQUEST,
|
ApiError::ValidationError(..) => StatusCode::BAD_REQUEST,
|
||||||
ApiError::Argon2Error(..) => StatusCode::INTERNAL_SERVER_ERROR,
|
ApiError::Argon2Error(..) => StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
ApiError::SessionInsertError(..) => StatusCode::INTERNAL_SERVER_ERROR,
|
ApiError::SessionInsertError(..) => StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
|
ApiError::AlreadyLoggedIn => StatusCode::BAD_REQUEST,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue