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:
MythEclipse
2025-09-26 15:05:45 +07:00
parent b80662188f
commit 96debc210a
35 changed files with 564 additions and 431 deletions
-1
View File
@@ -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(