79 lines
2.1 KiB
Rust
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))
|
|
}
|