nxtgauge-backend-rust/apps/users/src/handlers/permissions.rs
2026-03-25 22:15:07 +01:00

79 lines
2.1 KiB
Rust

use crate::AppState;
use axum::{http::StatusCode, response::IntoResponse, routing::get, Json, Router};
use serde::Serialize;
pub fn router() -> Router<AppState> {
Router::new().route("/", get(list_permissions))
}
#[derive(Serialize)]
struct PermissionEntry {
key: String,
module: String,
action: String,
}
const MODULES: &[&str] = &[
"Department Management",
"Designation Management",
"Internal Role Management",
"Employee Management",
"External Role Management",
"External Onboarding Management",
"Internal Dashboard Management",
"External Dashboard Management",
"Verification Management",
"Approval Management",
"Users Management",
"Company Management",
"Candidate Management",
"Customer Management",
"Photographer Management",
"Makeup Artist Management",
"Tutor Management",
"Developer Management",
"Fitness Trainer Management",
"Graphic Designer Management",
"Social Media Management",
"Video Editor Management",
"Catering Services Management",
"Jobs Management",
"Leads Management",
"Applications Management",
"Responses Management",
"Review Management",
"Pricing Management",
"Credit Management",
"Coupon Management",
"Discount Management",
"Tax Management",
"Order Management",
"Invoice Management",
"Ledger Management",
"Knowledge Base Management",
"Support Management",
"Report Management",
"Notifications",
];
const ACTIONS: &[&str] = &["View", "Create", "Update", "Delete"];
async fn list_permissions(
_: axum::extract::State<AppState>,
) -> Result<impl IntoResponse, (StatusCode, String)> {
let permissions: Vec<PermissionEntry> = MODULES
.iter()
.flat_map(|module| {
ACTIONS.iter().map(|action| {
let key = format!("{}:{}", module.replace(' ', "_").to_lowercase(), action.to_lowercase());
PermissionEntry {
key,
module: module.to_string(),
action: action.to_string(),
}
})
})
.collect();
Ok(Json(permissions))
}