CompositeError, UserAuthRequired, /users/self & users/:id, misc
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
use axum::{
|
||||
http::StatusCode,
|
||||
response::{IntoResponse, Response},
|
||||
};
|
||||
use rusqlite::OptionalExtension;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
ISE_MSG,
|
||||
database::{self},
|
||||
users::{
|
||||
auth::{AuthError, UserPasswordHashing},
|
||||
@@ -34,16 +39,6 @@ pub enum UserError {
|
||||
#[error("Argon2 passhash error: {0}")]
|
||||
PassHashError(argon2::password_hash::Error),
|
||||
}
|
||||
impl From<rusqlite::Error> for UserError {
|
||||
fn from(error: rusqlite::Error) -> Self {
|
||||
UserError::DatabaseError(error.to_string())
|
||||
}
|
||||
}
|
||||
impl From<argon2::password_hash::Error> for UserError {
|
||||
fn from(err: argon2::password_hash::Error) -> Self {
|
||||
UserError::PassHashError(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl User {
|
||||
pub fn get_by_id(id: Uuid) -> Result<User, UserError> {
|
||||
@@ -176,3 +171,32 @@ impl User {
|
||||
self.id == Uuid::nil()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<rusqlite::Error> for UserError {
|
||||
fn from(error: rusqlite::Error) -> Self {
|
||||
UserError::DatabaseError(error.to_string())
|
||||
}
|
||||
}
|
||||
impl From<argon2::password_hash::Error> for UserError {
|
||||
fn from(err: argon2::password_hash::Error) -> Self {
|
||||
UserError::PassHashError(err)
|
||||
}
|
||||
}
|
||||
impl IntoResponse for UserError {
|
||||
fn into_response(self) -> Response {
|
||||
match self {
|
||||
Self::DatabaseError(e) => {
|
||||
eprintln!("[ERROR] Database error occured: {e}");
|
||||
(StatusCode::INTERNAL_SERVER_ERROR, ISE_MSG.into())
|
||||
}
|
||||
Self::PassHashError(e) => {
|
||||
eprintln!("[ERROR] A passwordhash error occured: {e}");
|
||||
(StatusCode::INTERNAL_SERVER_ERROR, ISE_MSG.into())
|
||||
}
|
||||
Self::UserHandleError(_) => (StatusCode::BAD_REQUEST, self.to_string()),
|
||||
Self::NoUserWithId(_) => (StatusCode::BAD_REQUEST, self.to_string()),
|
||||
Self::NoUserWithHandle(_) => (StatusCode::BAD_REQUEST, self.to_string()),
|
||||
}
|
||||
.into_response()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user