Rename VResponse to AuthResponse and use it only in Authentication

This commit is contained in:
Savanni D'Gerinel 2025-02-16 19:41:05 -05:00
parent 0663a70c97
commit aa7229eae4

View File

@ -94,26 +94,27 @@ struct UserOverview {
#[derive(Deserialize, Serialize)] #[derive(Deserialize, Serialize)]
#[serde(tag = "type", content = "content", rename_all = "kebab-case")] #[serde(tag = "type", content = "content", rename_all = "kebab-case")]
#[typeshare] #[typeshare]
enum VResponse<A> { enum AuthResponse<A> {
Success(A), Success(A),
PasswordReset(SessionId), PasswordReset(SessionId),
Nothing,
} }
#[axum::debug_handler] #[axum::debug_handler]
async fn check_password( async fn check_password(
request: Json<AuthRequest>, request: Json<AuthRequest>,
) -> (StatusCode, Json<Option<VResponse<SessionId>>>) { ) -> (StatusCode, Json<Option<AuthResponse<SessionId>>>) {
let Json(request) = request; let Json(request) = request;
if request.username == "vakarian" && request.password == "aoeu" { if request.username == "vakarian" && request.password == "aoeu" {
( (
StatusCode::OK, StatusCode::OK,
Json(Some(VResponse::Success("vakarian-session-id".into()))), Json(Some(AuthResponse::Success("vakarian-session-id".into()))),
) )
} else if request.username == "shephard" && request.password == "aoeu" { } else if request.username == "shephard" && request.password == "aoeu" {
( (
StatusCode::OK, StatusCode::OK,
Json(Some(VResponse::PasswordReset("shephard-session-id".into()))), Json(Some(AuthResponse::PasswordReset(
"shephard-session-id".into(),
))),
) )
} else { } else {
(StatusCode::UNAUTHORIZED, Json(None)) (StatusCode::UNAUTHORIZED, Json(None))
@ -154,7 +155,7 @@ fn parse_session_header(headers: HeaderMap) -> ResultExt<Option<SessionId>, AppE
} }
} }
async fn auth_required<B, F, Fut>(headers: HeaderMap, f: F) -> (StatusCode, Json<VResponse<B>>) async fn auth_required<B, F, Fut>(headers: HeaderMap, f: F) -> (StatusCode, Json<Option<B>>)
where where
F: Fn() -> Fut, F: Fn() -> Fut,
Fut: Future<Output = (StatusCode, B)>, Fut: Future<Output = (StatusCode, B)>,
@ -163,16 +164,14 @@ where
ResultExt::Ok(Some(session_id)) => { ResultExt::Ok(Some(session_id)) => {
if session_id == "vakarian-session-id".into() { if session_id == "vakarian-session-id".into() {
let (code, result) = f().await; let (code, result) = f().await;
(code, Json(VResponse::Success(result))) (code, Json(Some(result)))
} else if session_id == "shephard-id".into() {
(StatusCode::OK, Json(VResponse::PasswordReset("shephard-session-id".into())))
} else { } else {
(StatusCode::UNAUTHORIZED, Json(VResponse::Nothing)) (StatusCode::UNAUTHORIZED, Json(None))
} }
} }
ResultExt::Ok(None) => (StatusCode::UNAUTHORIZED, Json(VResponse::Nothing)), ResultExt::Ok(None) => (StatusCode::UNAUTHORIZED, Json(None)),
ResultExt::Err(AppError::Unauthorized) => (StatusCode::UNAUTHORIZED, Json(VResponse::Nothing)), ResultExt::Err(AppError::Unauthorized) => (StatusCode::UNAUTHORIZED, Json(None)),
ResultExt::Err(AppError::BadRequest) => (StatusCode::BAD_REQUEST, Json(VResponse::Nothing)), ResultExt::Err(AppError::BadRequest) => (StatusCode::BAD_REQUEST, Json(None)),
ResultExt::Fatal(err) => { ResultExt::Fatal(err) => {
panic!("{}", err); panic!("{}", err);
} }