Files
BackOffice.BFF/src/BackOffice.BFF.Application/Common/Models/PermissionDefinitions.cs
masoodafar-web 5a6dba445b
All checks were successful
Build and Deploy / build (push) Successful in 2m24s
refactor: rename SuperAdmin role to Administrator
2025-12-07 23:39:22 +03:30

131 lines
4.5 KiB
C#

namespace BackOffice.BFF.Application.Common.Models;
public static class RoleNames
{
// public const string SuperAdmin = "SuperAdmin";
public const string SuperAdmin = "Administrator";
public const string Admin = "Admin";
public const string Inspector = "Inspector";
}
public static class PermissionNames
{
// Dashboard
public const string DashboardView = "dashboard.view";
// Orders
public const string OrdersView = "orders.view";
public const string OrdersCreate = "orders.create";
public const string OrdersUpdate = "orders.update";
public const string OrdersDelete = "orders.delete";
public const string OrdersCancel = "orders.cancel";
public const string OrdersApprove = "orders.approve";
// Products
public const string ProductsView = "products.view";
public const string ProductsCreate = "products.create";
public const string ProductsUpdate = "products.update";
public const string ProductsDelete = "products.delete";
// Users
public const string UsersView = "users.view";
public const string UsersUpdate = "users.update";
public const string UsersDelete = "users.delete";
// Commission / Withdrawal
public const string CommissionView = "commission.view";
public const string CommissionApproveWithdrawal = "commission.approve_withdrawal";
// Public Messages
public const string PublicMessagesView = "publicmessages.view";
public const string PublicMessagesCreate = "publicmessages.create";
public const string PublicMessagesUpdate = "publicmessages.update";
public const string PublicMessagesPublish = "publicmessages.publish";
// Manual Payments
public const string ManualPaymentsView = "manualpayments.view";
public const string ManualPaymentsCreate = "manualpayments.create";
public const string ManualPaymentsApprove = "manualpayments.approve";
// Settings / Configuration / VAT
public const string SettingsView = "settings.view";
public const string SettingsManageConfiguration = "settings.manage_configuration";
public const string SettingsManageVat = "settings.manage_vat";
// Reports
public const string ReportsView = "reports.view";
}
public static class RolePermissionConfig
{
private static readonly IReadOnlyDictionary<string, string[]> RolePermissions =
new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase)
{
// SuperAdmin: full access (wildcard)
[RoleNames.SuperAdmin] = new[] { "*" },
// Admin: مدیریت سفارش‌ها، محصولات، بخشی از کمیسیون و پیام‌ها
[RoleNames.Admin] = new[]
{
PermissionNames.DashboardView,
PermissionNames.OrdersView,
PermissionNames.OrdersCreate,
PermissionNames.OrdersUpdate,
PermissionNames.OrdersCancel,
PermissionNames.ProductsView,
PermissionNames.ProductsCreate,
PermissionNames.ProductsUpdate,
PermissionNames.ProductsDelete,
PermissionNames.UsersView,
PermissionNames.UsersUpdate,
PermissionNames.CommissionView,
PermissionNames.CommissionApproveWithdrawal,
PermissionNames.PublicMessagesView,
PermissionNames.PublicMessagesCreate,
PermissionNames.PublicMessagesUpdate,
PermissionNames.PublicMessagesPublish,
PermissionNames.ManualPaymentsView,
PermissionNames.ManualPaymentsCreate,
PermissionNames.ReportsView
},
// Inspector: فقط مشاهده
[RoleNames.Inspector] = new[]
{
PermissionNames.DashboardView,
PermissionNames.OrdersView,
PermissionNames.UsersView,
PermissionNames.CommissionView,
PermissionNames.PublicMessagesView,
PermissionNames.ReportsView
}
};
public static bool HasPermission(string role, string permission)
{
if (string.IsNullOrWhiteSpace(role) || string.IsNullOrWhiteSpace(permission))
{
return false;
}
if (!RolePermissions.TryGetValue(role, out var permissions))
{
return false;
}
if (permissions.Contains("*", StringComparer.OrdinalIgnoreCase))
{
return true;
}
return permissions.Contains(permission, StringComparer.OrdinalIgnoreCase);
}
}