完善query_validator

This commit is contained in:
李运家 2024-10-01 08:33:26 +08:00
parent dbe36bfbaf
commit bd3e18dd8d
3 changed files with 11 additions and 9 deletions

View File

@ -22,7 +22,7 @@ impl Feedback {
Feedback, Feedback,
r#"select id, user_id, content, created_at from feedback limit $1 offset $2"#, r#"select id, user_id, content, created_at from feedback limit $1 offset $2"#,
page_size, page_size,
page (page - 1) * page_size
) )
.fetch_all(db_pool) .fetch_all(db_pool)
.await .await

View File

@ -66,7 +66,10 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
// if account.token != token { // if account.token != token {
// return (StatusCode::UNAUTHORIZED, "Invalid token".to_string()).into_response(); // return (StatusCode::UNAUTHORIZED, "Invalid token".to_string()).into_response();
// } // }
let language = account.account.clone().lang_tag.clone(); let mut language = account.account.clone().lang_tag.clone();
if language.is_empty() {
language = request_util::get_lang_tag(req.headers());
}
// 将Claims附加到请求扩展中以便后续处理使用 // 将Claims附加到请求扩展中以便后续处理使用
req.extensions_mut().insert( req.extensions_mut().insert(
Context { Context {

View File

@ -3,7 +3,7 @@ use http::Request;
use i18n::{message, message_ids::MessageId}; use i18n::{message, message_ids::MessageId};
use validator::Validate; use validator::Validate;
use crate::utils::request_util; use crate::context::Context;
use super::response::ResErr; use super::response::ResErr;
@ -19,20 +19,19 @@ where
type Rejection = ResErr; type Rejection = ResErr;
async fn from_request(req: http::Request<Body>, state: &S) -> Result<Self, Self::Rejection> { async fn from_request(req: http::Request<Body>, state: &S) -> Result<Self, Self::Rejection> {
// let context = req.extensions().get().unwrap();
let (parts, body) = req.into_parts(); let (parts, body) = req.into_parts();
let header = &parts.headers;
let query = Query::<T>::from_request(Request::from_parts(parts.clone(), body), state).await; let query = Query::<T>::from_request(Request::from_parts(parts.clone(), body), state).await;
let lang_tag = request_util::get_lang_tag(header);
let context: &Context = parts.extensions.get().unwrap();
tracing::info!("{:?}", context);
if let Ok(Query(data)) = query { if let Ok(Query(data)) = query {
match super::validator::validate_params(&data, &lang_tag) { match super::validator::validate_params(&data, context.get_lang_tag()) {
Ok(_) => Ok(QueryValidator(data)), Ok(_) => Ok(QueryValidator(data)),
Err(err) => Err(err), Err(err) => Err(err),
} }
} else { } else {
let err = Err(ResErr::params(message!(&lang_tag, MessageId::InvalidParams))); let err = Err(ResErr::params(message!(context.get_lang_tag(), MessageId::InvalidParams)));
err err
} }
} }