3774060
ZhenYi
fix(session): persist store on login and pow issue, validate __Host- cookie prefix rules
3774060
use axum::response::{IntoResponse, Response};
use export::rest::{AppResponseData, NoData};
use sea_orm::DbErr;
#[derive(Debug)]
pub enum SessionError {
Unauthorized,
Database(DbErr),
}
impl std::fmt::Display for SessionError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Unauthorized => write!(f, "unauthorized"),
Self::Database(err) => write!(f, "database error: {err}"),
}
}
}
impl std::error::Error for SessionError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
Self::Database(err) => Some(err),
_ => None,
}
}
}
impl From<DbErr> for SessionError {
fn from(err: DbErr) -> Self {
Self::Database(err)
}
}
impl IntoResponse for SessionError {
fn into_response(self) -> Response {
match self {
Self::Unauthorized => AppResponseData::<NoData>::err(401, "unauthorized")
.into_response(),
Self::Database(_) => AppResponseData::<NoData>::err(500, "internal error")
.into_response(),
}
}
}