Files
Arkendro/server/src/routes/admin.rs

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"))
}