获取反馈列表接口的权限

This commit is contained in:
李运家 2024-06-21 10:06:45 +08:00
parent 9a7271cf83
commit dd5533ab31
4 changed files with 14 additions and 7 deletions

View File

@ -20,7 +20,8 @@ pub async fn add_feedback(
/// 获取反馈信息列表
pub async fn get_feedback_list_by_page(
Extension(context): Extension<Context>,
Query(page_params): Query<PageParams>
) -> ResResult<ResData<Pageable<Feedback>>> {
service::feedback::get_feedback_list_by_page(page_params.page.unwrap(), page_params.page_size.unwrap()).await
service::feedback::get_feedback_list_by_page(context, page_params.page.unwrap(), page_params.page_size.unwrap()).await
}

View File

@ -26,9 +26,9 @@ pub(crate) fn init() -> Router {
post(controller::feedback::add_feedback)
.get(controller::feedback::get_feedback_list_by_page),
)
/* .layer(axum::middleware::from_fn(
.layer(axum::middleware::from_fn(
library::middleware::req_ctx::authenticate_ctx,
)) */;
));
Router::new()
.nest("/", open)

View File

@ -5,9 +5,6 @@ use jsonwebtoken::{decode, DecodingKey, Validation};
use crate::{cache::account_cache::LOGIN_CACHE, config, context::Context, token::Claims};
const WHITE_LIST: &[(&str, &str)] = &[
("GET", "/api/v1/users/:id"),
("POST", "/api/v1/orders"),
("GET", "/feedback"),
("POST", "/account/sys"),
];
@ -15,6 +12,7 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
// 获取请求的url和method然后判断是否在白名单中如果在白名单中则直接返回next(req),否则继续执行下面的代码
let method = req.method().clone().to_string();
let uri = req.uri().path_and_query().unwrap().to_string();
tracing::info!("method: {}, uri: {}", method, uri);
if WHITE_LIST.into_iter().find(|item| {
return item.0 == method && item.1 == uri;
}).is_some() {

View File

@ -6,7 +6,15 @@ use library::res::pageable::Pageable;
use library::res::response::{ResData, ResResult};
/// 获取反馈信息列表
pub async fn get_feedback_list_by_page(page: i64, page_size: i64) -> ResResult<ResData<Pageable<Feedback>>> {
pub async fn get_feedback_list_by_page(
context: Context,
page: i64,
page_size: i64
) -> ResResult<ResData<Pageable<Feedback>>> {
if !context.account.role.is_admin() {
tracing::error!("非管理员用户,无法获取反馈信息列表");
return Ok(ResData::some(Pageable::<Feedback>::empty()));
}
let feedback_list = Feedback::search_feedback(page, page_size, db!()).await.ok();
if feedback_list.is_none() {
tracing::error!("反馈信息为空");