feat: Enhance user permissions and update event handling with improved response structures
This commit is contained in:
@@ -6,6 +6,9 @@ use imphnen_libs::{AppState, jsonwebtoken::decode_access_token};
|
||||
use imphnen_utils::common_response;
|
||||
use axum_extra::headers::{authorization::Bearer, Authorization, HeaderMapExt};
|
||||
use std::convert::Infallible;
|
||||
use imphnen_iam::v1::users::{users_service::{UsersService, UsersServiceTrait}};
|
||||
use imphnen_libs::ResourceEnum;
|
||||
use imphnen_utils::make_thing;
|
||||
|
||||
pub async fn auth_middleware(
|
||||
Extension(_state): Extension<AppState>, // state is currently unused in this middleware
|
||||
@@ -32,6 +35,15 @@ pub async fn auth_middleware(
|
||||
)),
|
||||
};
|
||||
|
||||
req.extensions_mut().insert(claims);
|
||||
let user_id = claims.user_id.clone();
|
||||
|
||||
let repo = UsersService {};
|
||||
let thing_id = make_thing(&ResourceEnum::Users.to_string(), &user_id);
|
||||
let user_data = match repo.get_user_by_id_internal(&thing_id, &_state).await {
|
||||
Ok(user) => user,
|
||||
Err(_) => return Ok(common_response(StatusCode::UNAUTHORIZED, "User not found")),
|
||||
};
|
||||
|
||||
req.extensions_mut().insert(user_data);
|
||||
Ok(next.run(req).await)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user