Refactor permissions and user DTOs to use imphnen_entities module
- Updated permissions_repository.rs to import PermissionsItemDto from imphnen_entities. - Modified permissions_schema.rs to import PermissionsItemDto and PermissionsQueryDto from imphnen_entities. - Changed roles_dto.rs to import PermissionsItemDto and PermissionsQueryDto from imphnen_entities. - Updated users_dto.rs to import ExperienceDto, EducationDto, UsersDetailQueryDto, RolesDetailQueryDto, and RolesDetailItemDto from imphnen_entities, and removed redundant struct definitions. - Refactored users_repository.rs to import UsersDetailQueryDto from imphnen_entities. - Updated users_schema.rs to import UsersDetailQueryDto, ExperienceDto, and EducationDto from imphnen_entities. - Modified users_service.rs to use UsersDetailQueryDto from imphnen_entities and added UserLookupService implementation. - Updated Cargo.toml in imphnen-libs to include async-trait as a workspace dependency. - Refactored axum module to remove redundant imports and streamline code. - Updated lib.rs to include AppState struct with user_lookup_service and auth_repository fields. - Refactored surrealdb module to define SurrealWsClient and SurrealMemClient types. - Removed imphnen-iam dependency from middleware's Cargo.toml. - Updated auth_middleware to use UsersDetailQueryDto from imphnen_entities and refactored user retrieval logic. - Refactored permissions_middleware to use PermissionsEnum from imphnen_entities and updated user retrieval logic. - Updated mock_test.rs to create AppState with user_lookup_service and auth_repository. - Added permissions.rs and users.rs to imphnen_entities with necessary DTOs and enums. - Created services.rs in imphnen-libs to define UserLookupService and AuthRepositoryTrait traits.
This commit is contained in:
@@ -4,7 +4,6 @@ version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
imphnen-iam.workspace = true
|
||||
imphnen-libs.workspace = true
|
||||
imphnen-utils.workspace = true
|
||||
imphnen-entities.workspace = true
|
||||
|
||||
@@ -3,11 +3,10 @@ use axum::{
|
||||
response::Response,
|
||||
};
|
||||
use imphnen_libs::{AppState, jsonwebtoken::decode_access_token};
|
||||
use imphnen_iam::v1::users::users_dto::UsersDetailQueryDto;
|
||||
use imphnen_entities::UsersDetailQueryDto;
|
||||
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;
|
||||
|
||||
@@ -45,7 +44,7 @@ pub async fn auth_middleware(
|
||||
let mut user_data: Option<UsersDetailQueryDto> = None;
|
||||
if let Ok(opt_user) = mem_db.select(("users", &user_id)).await {
|
||||
if let Some(user) = opt_user {
|
||||
let user: imphnen_iam::v1::users::users_dto::UsersDetailQueryDto = user;
|
||||
let user: UsersDetailQueryDto = user;
|
||||
if !user.is_deleted && !user.role.is_deleted {
|
||||
user_data = Some(user);
|
||||
}
|
||||
@@ -56,8 +55,7 @@ pub async fn auth_middleware(
|
||||
let user_data = match user_data {
|
||||
Some(user) => user,
|
||||
None => {
|
||||
let repo = UsersService {};
|
||||
match repo.get_user_by_id_internal(&thing_id, &state).await {
|
||||
match state.user_lookup_service.get_user_by_id_internal(&thing_id, &state).await {
|
||||
Ok(user) => {
|
||||
// Optionally: insert into mem for future requests
|
||||
let _: Result<Option<UsersDetailQueryDto>, _> = mem_db.update(("users", &user_id)).content(user.clone()).await;
|
||||
|
||||
@@ -3,7 +3,7 @@ use axum::{
|
||||
http::{Request, Response, StatusCode},
|
||||
};
|
||||
use futures::future::BoxFuture;
|
||||
use imphnen_iam::{AuthRepository, PermissionsEnum};
|
||||
use imphnen_entities::PermissionsEnum;
|
||||
use imphnen_libs::AppState;
|
||||
use imphnen_utils::{common_response, extract_email, extract_email_async};
|
||||
use std::task::{Context, Poll};
|
||||
@@ -77,8 +77,7 @@ where
|
||||
}
|
||||
};
|
||||
|
||||
let auth_repo = AuthRepository::new(&app_state);
|
||||
let user = match auth_repo.query_get_stored_user(email).await {
|
||||
let user = match app_state.auth_repository.query_get_stored_user(email).await {
|
||||
Ok(user) => user,
|
||||
Err(_) => {
|
||||
return Ok(common_response(
|
||||
|
||||
Reference in New Issue
Block a user