@* Views/Admin/Roles/Index.cshtml *@ @model IEnumerable @using Web.ViewModel.AccountVM @using Web.Authorization @{ ViewData["Title"] = "Role Management"; var permissionGroups = ViewBag.PermissionGroups as Dictionary>; } @section Styles { }
@{ var totalRoles = Model.Count(); var totalPerms = Permissions.GetAll().Count; var avgPerms = totalRoles > 0 ? (int)Model.Average(r => r.SelectedPermissions?.Count ?? 0) : 0; }
@totalRoles
Total Roles
@totalPerms
Available Permissions
@avgPerms
Avg Permissions / Role
@Html.AntiForgeryToken()
System Roles
@totalRoles defined
@if (Model.Any()) { @{ var roleColors = new Dictionary { {"admin", "#f87171"}, {"user", "#60a5fa"}, {"manager", "#fbbf24"}, {"developer", "#c084fc"}, {"viewer", "#34d399"}, {"editor", "#22d3ee"} }; var roleIcons = new Dictionary { {"admin", "fa-solid fa-crown"}, {"user", "fa-solid fa-user"}, {"manager", "fa-solid fa-user-tie"}, {"developer", "fa-solid fa-code"}, {"viewer", "fa-solid fa-eye"}, {"editor", "fa-solid fa-pen-nib"} }; } @foreach (var role in Model) { var key = role.Name?.ToLower() ?? ""; var color = roleColors.ContainsKey(key) ? roleColors[key] : "#fb923c"; var icon = roleIcons.ContainsKey(key) ? roleIcons[key] : "fa-solid fa-shield-halved"; var permCount = role.SelectedPermissions?.Count ?? 0; var permsStr = role.SelectedPermissions != null ? string.Join(",", role.SelectedPermissions) : ""; }
Role Permissions Actions
@role.Name
@if (permCount == 0) { No permissions assigned } else if (permCount == totalPerms) { All permissions (@permCount) } else { @foreach (var perm in role.SelectedPermissions!.Take(4)) { @perm.Split('.').Last() } @if (permCount > 4) { +@(permCount - 4) more } }
} else {

No roles defined

Create your first role to start managing access

}
0 of @totalRoles selected
@DateTime.Now.ToString("MMM dd, yyyy HH:mm")
@section Scripts { }