54 lines
1.5 KiB
Rust
54 lines
1.5 KiB
Rust
use crate::controllers::users::UsersController;
|
|
use crate::utils::{auth::*, error::*, models::*, DbPool};
|
|
use axum::{
|
|
extract::{Path, State},
|
|
response::Json,
|
|
};
|
|
|
|
pub async fn get_users(
|
|
_admin: AdminUser,
|
|
State(pool): State<DbPool>,
|
|
) -> Result<Json<Vec<User>>, AppError> {
|
|
let users = UsersController::get_all_users(&pool).await?;
|
|
Ok(success_response(users))
|
|
}
|
|
|
|
pub async fn create_user_handler(
|
|
_admin: AdminUser,
|
|
State(pool): State<DbPool>,
|
|
Json(request): Json<CreateUserRequest>,
|
|
) -> Result<Json<User>, AppError> {
|
|
let role = request.role.unwrap_or(UserRole::User);
|
|
let storage_limit_gb = request.storage_limit_gb.unwrap_or(0);
|
|
|
|
let user = UsersController::create_user(
|
|
&pool,
|
|
&request.username,
|
|
&request.password,
|
|
role,
|
|
storage_limit_gb,
|
|
)
|
|
.await?;
|
|
|
|
Ok(success_response(user))
|
|
}
|
|
|
|
pub async fn update_user_handler(
|
|
_admin: AdminUser,
|
|
State(pool): State<DbPool>,
|
|
Path(user_id): Path<i64>,
|
|
Json(request): Json<UpdateUserRequest>,
|
|
) -> Result<Json<User>, AppError> {
|
|
let updated_user = UsersController::update_user(&pool, user_id, request).await?;
|
|
Ok(success_response(updated_user))
|
|
}
|
|
|
|
pub async fn delete_user_handler(
|
|
_admin: AdminUser,
|
|
State(pool): State<DbPool>,
|
|
Path(user_id): Path<i64>,
|
|
) -> Result<Json<serde_json::Value>, AppError> {
|
|
UsersController::delete_user(&pool, user_id).await?;
|
|
Ok(success_message("User deleted successfully"))
|
|
}
|