feat: update dependencies and add MinIO integration
- Updated `async-channel` to version 2.5.0 and added new dependencies in `Cargo.lock`. - Introduced `minio` crate for file upload functionality. - Added `career_status` field to user-related DTOs and schemas. - Implemented file upload endpoint in `users_controller.rs` with multipart support. - Created `MinioService` for handling file uploads to MinIO. - Updated user seeding and test cases to accommodate new `career_status` field. - Refactored permissions guard to return user details.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use super::PermissionsEnum;
|
||||
use crate::{AppState, AuthRepository, common_response, extract_email, extract_email_async};
|
||||
use crate::{AppState, AuthRepository, common_response, extract_email, extract_email_async, UsersDetailQueryDto};
|
||||
use axum::{
|
||||
http::{HeaderMap, StatusCode},
|
||||
response::Response,
|
||||
@@ -9,7 +9,7 @@ pub async fn permissions_guard(
|
||||
headers: &HeaderMap,
|
||||
state: AppState,
|
||||
required_permissions: Vec<PermissionsEnum>,
|
||||
) -> Result<(), Response> {
|
||||
) -> Result<UsersDetailQueryDto, Response> {
|
||||
let auth_repo = AuthRepository::new(&state);
|
||||
|
||||
// Try synchronous email extraction first (for internal JWT tokens)
|
||||
@@ -38,9 +38,8 @@ pub async fn permissions_guard(
|
||||
"User session expired or not found",
|
||||
)
|
||||
})?;
|
||||
let role = raw_user.role;
|
||||
let role_permissions: Vec<String> =
|
||||
role.permissions.into_iter().map(|perm| perm.name).collect();
|
||||
raw_user.role.permissions.iter().map(|perm| perm.name.clone()).collect();
|
||||
|
||||
for required in &required_permissions {
|
||||
let required_str = required.to_string();
|
||||
@@ -52,5 +51,5 @@ pub async fn permissions_guard(
|
||||
));
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
Ok(raw_user)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user