aboutsummaryrefslogtreecommitdiff
path: root/src/extract
diff options
context:
space:
mode:
authorTolmachev Igor <me@igorek.dev>2025-09-14 23:27:25 +0300
committerTolmachev Igor <me@igorek.dev>2025-09-14 23:27:25 +0300
commit955598dce9aeb5626654c72b0ef94850123fa8ac (patch)
tree4fb161c2e67fdc161ebbca5ced271b6e7724dc30 /src/extract
parent39bf8397949ea2738ac3dfc934fcc3f07a6b0b66 (diff)
downloadqueue_server-955598dce9aeb5626654c72b0ef94850123fa8ac.tar.gz
queue_server-955598dce9aeb5626654c72b0ef94850123fa8ac.zip
Add openapi specs and docs
Diffstat (limited to 'src/extract')
-rw-r--r--src/extract/auth.rs10
-rw-r--r--src/extract/json.rs4
2 files changed, 7 insertions, 7 deletions
diff --git a/src/extract/auth.rs b/src/extract/auth.rs
index 1feb985..c603ee7 100644
--- a/src/extract/auth.rs
+++ b/src/extract/auth.rs
@@ -4,12 +4,12 @@ use entity::users;
4use headers::authorization::{Authorization, Bearer}; 4use headers::authorization::{Authorization, Bearer};
5use sea_orm::EntityTrait; 5use sea_orm::EntityTrait;
6 6
7use crate::{ApiError, AppState, validate_jwt}; 7use crate::{AppState, ClientError, ErrorResponse, validate_jwt};
8 8
9pub struct Auth(pub users::Model); 9pub struct Auth(pub users::Model);
10 10
11impl FromRequestParts<AppState> for Auth { 11impl FromRequestParts<AppState> for Auth {
12 type Rejection = ApiError; 12 type Rejection = ErrorResponse;
13 13
14 async fn from_request_parts( 14 async fn from_request_parts(
15 parts: &mut Parts, 15 parts: &mut Parts,
@@ -19,15 +19,15 @@ impl FromRequestParts<AppState> for Auth {
19 TypedHeader::<Authorization<Bearer>>::from_request_parts(parts, state).await?; 19 TypedHeader::<Authorization<Bearer>>::from_request_parts(parts, state).await?;
20 20
21 let jwt_claims = validate_jwt(token_header.token(), &state.secret) 21 let jwt_claims = validate_jwt(token_header.token(), &state.secret)
22 .map_err(|_| ApiError::NotAuthorized)?; 22 .map_err(|_| ClientError::NotAuthorized)?;
23 23
24 let user = users::Entity::find_by_id(jwt_claims.sub) 24 let user = users::Entity::find_by_id(jwt_claims.sub)
25 .one(&state.db) 25 .one(&state.db)
26 .await? 26 .await?
27 .ok_or(ApiError::NotAuthorized)?; 27 .ok_or(ClientError::NotAuthorized)?;
28 28
29 if jwt_claims.iat < user.password_issue_date.and_utc().timestamp() { 29 if jwt_claims.iat < user.password_issue_date.and_utc().timestamp() {
30 return Err(ApiError::NotAuthorized); 30 return Err(ClientError::NotAuthorized.into());
31 } 31 }
32 32
33 Ok(Auth(user)) 33 Ok(Auth(user))
diff --git a/src/extract/json.rs b/src/extract/json.rs
index 751df71..aaf8623 100644
--- a/src/extract/json.rs
+++ b/src/extract/json.rs
@@ -1,6 +1,6 @@
1use axum::extract::{FromRequest, Request, rejection::JsonRejection}; 1use axum::extract::{FromRequest, Request, rejection::JsonRejection};
2 2
3use crate::error::ApiError; 3use crate::ErrorResponse;
4 4
5pub struct ApiJson<T>(pub T); 5pub struct ApiJson<T>(pub T);
6 6
@@ -9,7 +9,7 @@ where
9 axum::Json<T>: FromRequest<S, Rejection = JsonRejection>, 9 axum::Json<T>: FromRequest<S, Rejection = JsonRejection>,
10 S: Send + Sync, 10 S: Send + Sync,
11{ 11{
12 type Rejection = ApiError; 12 type Rejection = ErrorResponse;
13 13
14 #[inline] 14 #[inline]
15 async fn from_request(req: Request, state: &S) -> Result<Self, Self::Rejection> { 15 async fn from_request(req: Request, state: &S) -> Result<Self, Self::Rejection> {