// ====================================== // Author: Ebenezer Monney // Email: info@ebenmonney.com // Copyright (c) 2017 www.ebenmonney.com // // ==> Gun4Hire: contact@ebenmonney.com // ====================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.ObjectModel; namespace DAL.Core { public static class ApplicationPermissions { public static ReadOnlyCollection AllPermissions; public const string UsersPermissionGroupName = "User Permissions"; public static ApplicationPermission ViewUsers = new ApplicationPermission("View Users", "users.view", UsersPermissionGroupName, "Permission to view other users account details"); public static ApplicationPermission ManageUsers = new ApplicationPermission("Manage Users", "users.manage", UsersPermissionGroupName, "Permission to create, delete and modify other users account details"); public const string RolesPermissionGroupName = "Role Permissions"; public static ApplicationPermission ViewRoles = new ApplicationPermission("View Roles", "roles.view", RolesPermissionGroupName, "Permission to view available roles"); public static ApplicationPermission ManageRoles = new ApplicationPermission("Manage Roles", "roles.manage", RolesPermissionGroupName, "Permission to create, delete and modify roles"); public static ApplicationPermission AssignRoles = new ApplicationPermission("Assign Roles", "roles.assign", RolesPermissionGroupName, "Permission to assign roles to users"); static ApplicationPermissions() { List allPermissions = new List() { ViewUsers, ManageUsers, ViewRoles, ManageRoles, AssignRoles }; AllPermissions = allPermissions.AsReadOnly(); } public static ApplicationPermission GetPermissionByName(string permissionName) { return AllPermissions.Where(p => p.Name == permissionName).FirstOrDefault(); } public static ApplicationPermission GetPermissionByValue(string permissionValue) { return AllPermissions.Where(p => p.Value == permissionValue).FirstOrDefault(); } public static string[] GetAllPermissionValues() { return AllPermissions.Select(p => p.Value).ToArray(); } public static string[] GetAdministrativePermissionValues() { return new string[] { ManageUsers, ManageRoles, AssignRoles }; } } public class ApplicationPermission { public ApplicationPermission() { } public ApplicationPermission(string name, string value, string groupName, string description = null) { Name = name; Value = value; GroupName = groupName; Description = description; } public string Name { get; set; } public string Value { get; set; } public string GroupName { get; set; } public string Description { get; set; } public override string ToString() { return Value; } public static implicit operator string(ApplicationPermission permission) { return permission.Value; } } }