feat: apply env

This commit is contained in:
Maulana Sodiqin
2025-03-17 09:27:19 +07:00
parent 271b00c2c4
commit 0c28d34d57
14 changed files with 185 additions and 98 deletions
+17 -32
View File
@@ -1,9 +1,6 @@
use crate::{common_response, decode_access_token, AppState};
use crate::{common_response, extract_email, AppState};
use axum::{
extract::Request,
http::{header::AUTHORIZATION, StatusCode},
middleware::Next,
response::Response,
extract::Request, http::StatusCode, middleware::Next, response::Response,
Extension,
};
use std::convert::Infallible;
@@ -15,42 +12,30 @@ pub async fn auth_middleware(
mut req: Request,
next: Next,
) -> Result<Response, Infallible> {
let auth_header = match req.headers().get(AUTHORIZATION) {
Some(h) => h.to_str().unwrap_or_default(),
let headers = req.headers();
let email = match extract_email(headers) {
Some(email) => email,
None => {
return Ok(common_response(
StatusCode::UNAUTHORIZED,
"You are not authorized",
));
}
};
let token = auth_header.strip_prefix("Bearer ").unwrap_or("");
let token_data = match decode_access_token(token) {
Ok(data) => data,
Err(_) => {
return Ok(common_response(
StatusCode::UNAUTHORIZED,
&format!("Invalid or expired token"),
"Invalid or expired token",
));
}
};
let repository = AuthRepository::new(&state);
let user: Option<AuthQueryByEmailResponse> = match repository
.query_user_by_email(token_data.claims.sub.clone())
.await
{
Ok(user) => Some(user),
Err(err) => {
return Ok(common_response(
StatusCode::INTERNAL_SERVER_ERROR,
&format!("DB error: {}", err),
))
}
};
let user: Option<AuthQueryByEmailResponse> =
match repository.query_user_by_email(email).await {
Ok(user) => Some(user),
Err(err) => {
return Ok(common_response(
StatusCode::INTERNAL_SERVER_ERROR,
&format!("DB error: {}", err),
))
}
};
if user.is_none() {
return Ok(common_response(