use actix_web::{error, http::StatusCode, HttpResponse, HttpResponseBuilder};
use derive_more::{Display, Error};
#[derive(Debug, Display, Error)]
pub enum AuthError {
#[display("token error")]
TokenError,
#[display("forbidden")]
Forbidden,
#[display("unauthorized")]
Unauthorized,
}
impl error::ResponseError for AuthError {
fn status_code(&self) -> StatusCode {
match *self {
AuthError::TokenError => StatusCode::UNAUTHORIZED,
AuthError::Forbidden => StatusCode::FORBIDDEN,
AuthError::Unauthorized => StatusCode::UNAUTHORIZED,
}
}
fn error_response(&self) -> HttpResponse {
HttpResponseBuilder::new(self.status_code()).body(self.to_string())
}
}