feat(rbac): full permission catalog in the custom-role matrix UI (fa/en/ar)
CI/CD / CI · API (dotnet build + test) (push) Successful in 42s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 30s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m7s
CI/CD / CI · Admin Web (tsc) (push) Successful in 37s
CI/CD / CI · Website (tsc) (push) Successful in 45s
CI/CD / CI · Koja (tsc) (push) Successful in 49s
CI/CD / Deploy · all services (push) Successful in 3m24s

Mirrors the expanded backend catalog on the client: the Permission type and the
custom-role permission matrix now expose all ~80 capabilities grouped into 16
sections (admin, branches, menu, inventory, taxes, staff, tables, orders,
register, queue/kitchen, delivery, customers, coupons, marketing, reports,
expenses), each with fa/en/ar labels. Nav visibility now maps each page to its
View permission; taxes & branches become permission-driven (managers can view),
leaving billing as the sole hard owner-only nav gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-21 05:49:11 +03:30
parent 7a5ea75b50
commit 53d90fa357
6 changed files with 471 additions and 113 deletions
@@ -34,31 +34,84 @@ interface PermGroup {
const PERM_GROUPS: PermGroup[] = [
{
labelKey: "customRoles.groupAdmin",
perms: ["ManageCafeSettings", "ManageBilling", "ManageBranches"],
perms: [
"ViewCafeSettings", "ManageCafeSettings", "ManageDiscoverProfile",
"ViewBilling", "ManageBilling", "ManageRoles",
"ViewPrintSettings", "ManagePrintSettings",
],
},
{
labelKey: "customRoles.groupBranches",
perms: ["ViewBranches", "CreateBranch", "EditBranch", "DeleteBranch"],
},
{
labelKey: "customRoles.groupMenu",
perms: ["ManageMenu", "ManageInventory", "ManageTaxes", "ManagePrintSettings"],
perms: ["ViewMenu", "CreateMenuItem", "EditMenuItem", "DeleteMenuItem"],
},
{
labelKey: "customRoles.groupInventory",
perms: ["ViewInventory", "CreateInventory", "EditInventory", "DeleteInventory"],
},
{
labelKey: "customRoles.groupTaxes",
perms: ["ViewTaxes", "CreateTax", "EditTax", "DeleteTax"],
},
{
labelKey: "customRoles.groupStaff",
perms: ["ManageStaff", "ManageSalaries", "ReviewLeave"],
perms: [
"ViewStaff", "CreateStaff", "EditStaff", "DeleteStaff",
"ManageStaff", "ManageStaffCredentials",
"ViewAttendance", "ManageAttendance",
"ViewSchedules", "ManageSchedules",
"ViewLeave", "ReviewLeave",
"ViewSalaries", "ManageSalaries",
],
},
{
labelKey: "customRoles.groupCustomer",
perms: ["ManageReservations", "ManageTables", "ManageCoupons"],
labelKey: "customRoles.groupTables",
perms: [
"ViewTables", "ManageTables",
"ViewReservations", "CreateReservation", "EditReservation", "DeleteReservation",
],
},
{
labelKey: "customRoles.groupOrders",
perms: [
"ViewOrders", "ProcessOrders", "EditOrder", "VoidOrder", "RefundOrder",
"ApplyDiscount", "CompOrder", "HandlePayments", "UpdateOrderStatus",
],
},
{
labelKey: "customRoles.groupRegister",
perms: ["OperateRegister", "OpenCashDrawer"],
},
{
labelKey: "customRoles.groupQueueKitchen",
perms: ["ViewQueue", "ManageQueue", "ViewKitchen", "ManageKitchenStations"],
},
{
labelKey: "customRoles.groupDelivery",
perms: ["ViewDelivery", "HandleDelivery", "AssignDelivery"],
},
{
labelKey: "customRoles.groupCustomers",
perms: ["ViewCustomers", "CreateCustomer", "EditCustomer", "DeleteCustomer"],
},
{
labelKey: "customRoles.groupCoupons",
perms: ["ViewCoupons", "CreateCoupon", "EditCoupon", "DeleteCoupon"],
},
{
labelKey: "customRoles.groupMarketing",
perms: ["ViewSms", "SendSms", "ManageSmsSettings", "ViewReviews", "ManageReviews"],
},
{
labelKey: "customRoles.groupReports",
perms: ["ViewReports", "ManageExpenses"],
perms: ["ViewReports", "ExportReports", "ViewAuditLog", "ViewFinancials", "ManageFinancials"],
},
{
labelKey: "customRoles.groupOps",
perms: ["ProcessOrders", "HandlePayments", "OperateRegister", "ManageQueue"],
},
{
labelKey: "customRoles.groupKitchen",
perms: ["ViewKitchen", "HandleDelivery"],
labelKey: "customRoles.groupExpenses",
perms: ["ViewExpenses", "CreateExpense", "EditExpense", "DeleteExpense"],
},
];