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