Added http errors for user apis

This commit is contained in:
2026-07-28 20:20:10 +02:00
parent abfc02b972
commit d18d59054a
2 changed files with 10 additions and 6 deletions

View File

@@ -5,12 +5,16 @@ use reqwest::StatusCode;
pub enum AppError {
InternalError(String),
OpenIdError(String),
Unauthorised
}
impl IntoResponse for AppError {
fn into_response(self) -> axum::response::Response {
let (status, message) = match self {
AppError::InternalError(msg) => (StatusCode::INTERNAL_SERVER_ERROR, msg),
AppError::OpenIdError(msg) => (StatusCode::UNPROCESSABLE_ENTITY, msg),
AppError::Unauthorised => (StatusCode::UNAUTHORIZED, "Unauthorised (did you login?)".into())
};
(status, message).into_response()
}

View File

@@ -156,16 +156,16 @@ pub async fn login(
State(pool): State<PgPool>,
Query(mut info): Query<OpenId>,
session: Session,
) -> Result<&'static str, AppError> {
) -> Result<(), AppError> {
if !info.is_valid().await? {
return Ok("nok");
return Err(AppError::OpenIdError("Some query parameters are erronous or lacking.".into()));
}
let steamid = info
.identity
.replace("https://steamcommunity.com/openid/id/", "");
let user = User::from_steamid(&pool, steamid).await?;
session.insert("uuid", user.id).await?;
Ok("ok")
Ok(())
}
pub async fn logout(session: Session) -> Result<(), AppError> {
@@ -177,11 +177,11 @@ pub async fn logout(session: Session) -> Result<(), AppError> {
pub async fn me(
State(pool): State<PgPool>,
session: Session,
) -> Result<Json<Option<User>>, AppError> {
) -> Result<Json<User>, AppError> {
if let Some(uuid) = session.get("uuid").await? {
let user = User::fetch_id(&pool, uuid).await?;
Ok(Json(Some(user)))
Ok(Json(user))
} else {
Ok(Json(None))
Err(AppError::Unauthorised)
}
}