using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
namespace gehGassi.Permissions
{
///
/// Auflistung aller verfügbaren Rechte für die Applikation
///
public enum Permission
{
///
/// Darf die Identität von Entitäten inkl. Mandanten annehmen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Special", Name = "Permission_ImpersionateAdmin", Description = "Permission_ImpersionateAdmin_Desc")]
ImpersionateAdmin = 0xF0,
///
/// Zugriff auf den Shop
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Special", Name = "Permission_Shop", Description = "Permission_Shop_Desc")]
ShopAccess = 0xF1,
///
/// Zugriff auf Bestellungen
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Special", Name = "Permission_Orders", Description = "Permission_Orders_Desc")]
OrdersAccess = 0xF2,
///
/// Zugriff auf Appversionen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Special", Name = "Permission_AppVersions", Description = "Permission_AppVersions_Desc")]
AppVersionsAccess = 0xF3,
///
/// Vollzugriff Benutzerverwaltung
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_User", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
UserManage = 0x10,
///
/// Benutzer auflisten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_User", Name = "Permission_Read", Description = "Permission_Read_Desc")]
UserRead = 0x11,
///
/// Benutzer anlegen
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_User", Name = "Permission_Create", Description = "Permission_Create_Desc")]
UserCreate = 0x12,
///
/// Benutzer bearbeiten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_User", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
UserEdit = 0x13,
///
/// Benutzer löschen
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_User", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
UserDelete = 0x14,
///
/// Vollzugriff Einstellungen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
SettingsManage = 0x20,
///
/// Zugriff Dateimanager
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Settings_FileManager", Description = "Permission_Settings_FileManager_Desc")]
SettingsFileManager = 0x21,
///
/// Zugriff Kunden-Typen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Customer_Types", Description = "Permission_Customer_Types_Desc")]
SettingsCustomerTypes = 0x22,
///
/// Zugriff Werbung Rubriken
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Advertisement_Categories", Description = "Permission_Advertisement_Categories_Desc")]
SettingsAdvertisementCategories = 0x23,
///
/// Zugriff Branchen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Customer_Branches", Description = "Permission_Customer_Branches_Desc")]
SettingsCustomerBranches = 0x24,
///
/// Zugriff Steuern
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_TaxRates", Description = "Permission_TaxRates_Desc")]
SettingsTaxRates = 0x25,
///
/// Zugriff Produktkategorien
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Product_Categories", Description = "Permission_Product_Categories_Desc")]
SettingsProductCategories = 0x26,
///
/// Zugriff Produkte
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Product", Description = "Permission_Product_Desc")]
SettingsProducts = 0x27,
///
/// Zugriff Versandkosten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_Shipment", Description = "Permission_Shipment_Desc")]
SettingsShipment = 0x28,
///
/// Zugriff Shopeinstellungen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_ShopSettings", Description = "Permission_ShopSettings_Desc")]
SettingsShop = 0x29,
///
/// Zugriff Shopeinstellungen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_SettingsDogRaces", Description = "Permission_SettingsDogRaces_Desc")]
SettingsDogRaces = 0x2A,
///
/// Zugriff Newskategorien
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_SettingsNewsCategories", Description = "Permission_SettingsNewsCategories_Desc")]
SettingsNewsCategories = 0x2B,
///
/// Zugriff Text-Seiten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_SettingsPages", Description = "Permission_SettingsPages_Desc")]
SettingsPages = 0x2C,
///
/// Zugriff Feedback
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_SettingsFeedback", Description = "Permission_SettingsFeedback_Desc")]
SettingsFeedback = 0x2D,
///
/// Zugriff Transaktionsgebühren
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_SettingsTransactionFees", Description = "Permission_SettingsTransactionFees_Desc")]
SettingsTransactionFees = 0x2E,
///
/// Zugriff Reklamationen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Settings", Name = "Permission_SettingsComplaints", Description = "Permission_SettingsComplaints_Desc")]
SettingsComplaints = 0x2F,
///
/// Kunden Vollzugriff
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Customer", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
CustomersManage = 0x30,
///
/// Kunden auflisten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Customer", Name = "Permission_Read", Description = "Permission_Read_Desc")]
CustomersRead = 0x31,
///
/// Kunden anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Customer", Name = "Permission_Create", Description = "Permission_Create_Desc")]
CustomersCreate = 0x32,
///
/// Kunden bearbeiten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Customer", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
CustomersEdit = 0x33,
///
/// Kunden löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Customer", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
CustomersDelete = 0x34,
///
/// App-User Vollzugriff
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_AppUsers", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
AppUsersManage = 0x40,
///
/// App-User auflisten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_AppUsers", Name = "Permission_Read", Description = "Permission_Read_Desc")]
AppUsersRead = 0x41,
///
/// App-User anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_AppUsers", Name = "Permission_Create", Description = "Permission_Create_Desc")]
AppUsersCreate = 0x42,
///
/// App-User bearbeiten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_AppUsers", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
AppUsersEdit = 0x43,
///
/// App-User löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_AppUsers", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
AppUsersDelete = 0x44,
///
/// App-User löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_AppUsers", Name = "Permission_SystemMessages", Description = "Permission_SystemMessages_Desc")]
AppUsersSystemMessages = 0x45,
///
/// App-User Reports
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_AppUsers", Name = "Permission_AppUserReports", Description = "Permission_AppUserReports_Desc")]
AppUserReports = 0x46,
///
/// Gutscheine Vollzugriff
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Voucher", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
VouchersManage = 0x50,
///
/// Gutscheine auflisten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Voucher", Name = "Permission_Read", Description = "Permission_Read_Desc")]
VouchersRead = 0x51,
///
/// Gutscheine anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Voucher", Name = "Permission_Create", Description = "Permission_Create_Desc")]
VouchersCreate = 0x52,
///
/// Gutscheine bearbeiten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Voucher", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
VouchersEdit = 0x53,
///
/// Gutscheine löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Voucher", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
VouchersDelete = 0x54,
///
/// Gutscheine stornieren
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Voucher", Name = "Permission_Cancel", Description = "Permission_Cancel_Desc")]
VouchersCancel = 0x56,
///
/// Listungen Vollzugriff
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Listing", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
ListingsManage = 0x60,
///
/// Listungen auflisten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Listing", Name = "Permission_Read", Description = "Permission_Read_Desc")]
ListingsRead = 0x61,
///
/// Listungen anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Listing", Name = "Permission_Create", Description = "Permission_Create_Desc")]
ListingsCreate = 0x62,
///
/// Listungen bearbeiten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Listing", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
ListingsEdit = 0x63,
///
/// Listungen löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Listing", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
ListingsDelete = 0x64,
///
/// Listungen buchen
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Listing", Name = "Permission_Book", Description = "Permission_Book_Desc")]
ListingsBook = 0x65,
///
/// Listungen stornieren
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Listing", Name = "Permission_Cancel", Description = "Permission_Cancel_Desc")]
ListingsCancel = 0x66,
///
/// Werbungen Vollzugriff
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Advertisement", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
AdvertisementsManage = 0x70,
///
/// Werbungen auflisten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Advertisement", Name = "Permission_Read", Description = "Permission_Read_Desc")]
AdvertisementsRead = 0x71,
///
/// Werbungen anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Advertisement", Name = "Permission_Create", Description = "Permission_Create_Desc")]
AdvertisementsCreate = 0x72,
///
/// Werbungen bearbeiten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Advertisement", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
AdvertisementsEdit = 0x73,
///
/// Werbungen löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Advertisement", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
AdvertisementsDelete = 0x74,
///
/// Werbungen stornieren
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Advertisement", Name = "Permission_Cancel", Description = "Permission_Cancel_Desc")]
AdvertisementsCancel = 0x76,
///
/// Banner Vollzugriff
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Banner", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
BannersManage = 0x80,
///
/// Banner auflisten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Banner", Name = "Permission_Read", Description = "Permission_Read_Desc")]
BannersRead = 0x81,
///
/// Banner anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Banner", Name = "Permission_Create", Description = "Permission_Create_Desc")]
BannersCreate = 0x82,
///
/// Banner bearbeiten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Banner", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
BannersEdit = 0x83,
///
/// Banner löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Banner", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
BannersDelete = 0x84,
///
/// Banner stornieren
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Banner", Name = "Permission_Cancel", Description = "Permission_Cancel_Desc")]
BannersCancel = 0x86,
///
/// Pin Vollzugriff
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Pin", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
PinsManage = 0x90,
///
/// Pin auflisten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Pin", Name = "Permission_Read", Description = "Permission_Read_Desc")]
PinsRead = 0x91,
///
/// Pin anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Pin", Name = "Permission_Create", Description = "Permission_Create_Desc")]
PinsCreate = 0x92,
///
/// Pin bearbeiten
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Pin", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
PinsEdit = 0x93,
///
/// Pin löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Pin", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
PinsDelete = 0x94,
///
/// Pin stornieren
///
[PermissionRoles("Administrator,PowerUser,Customer")]
[Display(GroupName = "Permission_Group_Pin", Name = "Permission_Cancel", Description = "Permission_Cancel_Desc")]
PinsCancel = 0x96,
///
/// Hunde Vollzugriff
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Dog", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
DogsManage = 0xA0,
///
/// Hunde auflisten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Dog", Name = "Permission_Read", Description = "Permission_Read_Desc")]
DogsRead = 0xA1,
///
/// Hunde anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Dog", Name = "Permission_Create", Description = "Permission_Create_Desc")]
DogsCreate = 0xA2,
///
/// Hunde bearbeiten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Dog", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
DogsEdit = 0xA3,
///
/// Hunde löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Dog", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
DogsDelete = 0xA4,
///
/// News Vollzugriff
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_News", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
NewsManage = 0xB0,
///
/// News auflisten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_News", Name = "Permission_Read", Description = "Permission_Read_Desc")]
NewsRead = 0xB1,
///
/// News anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_News", Name = "Permission_Create", Description = "Permission_Create_Desc")]
NewsCreate = 0xB2,
///
/// News bearbeiten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_News", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
NewsEdit = 0xB3,
///
/// News löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_News", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
NewsDelete = 0xB4,
///
/// News Freigabe
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_News", Name = "Permission_Approval", Description = "Permission_Approval_Desc")]
NewsApproval = 0xB5,
///
/// Statistiken Vollzugriff
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Statistics", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
StatisticsManage = 0xC0,
///
/// Abos Vollzugriff
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Subscriptions", Name = "Permission_Manage", Description = "Permission_Manage_Desc")]
SubscriptionsManage = 0xD0,
///
/// Abos auflisten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Subscriptions", Name = "Permission_Read", Description = "Permission_Read_Desc")]
SubscriptionsRead = 0xD1,
///
/// Abos anlegen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Subscriptions", Name = "Permission_Create", Description = "Permission_Create_Desc")]
SubscriptionsCreate = 0xD2,
///
/// Abos bearbeiten
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Subscriptions", Name = "Permission_Edit", Description = "Permission_Edit_Desc")]
SubscriptionsEdit = 0xD3,
///
/// Abos löschen
///
[PermissionRoles("Administrator,PowerUser")]
[Display(GroupName = "Permission_Group_Subscriptions", Name = "Permission_Delete", Description = "Permission_Delete_Desc")]
SubscriptionsDelete = 0xD4,
}
///
/// Hilfsattribut für die Zuordnung von Rollen zu Permissions
///
public class PermissionRolesAttribute : Attribute
{
public string Roles { get; set; }
///
/// Erstellt eine Instanz
///
/// Rollen für welche die Permission verfügbar ist
public PermissionRolesAttribute(string roles)
{
Roles = roles;
}
}
[ExcludeFromCodeCoverage]
public static class PermissionHelper
{
public static List GetForRole(string role)
{
var permissionType = typeof(Permission);
List permissions = new List();
foreach (var permissionName in Enum.GetNames(typeof(Permission)))
{
var member = permissionType.GetMember(permissionName);
var permissionRolesAttribute = member[0].GetCustomAttribute();
if (permissionRolesAttribute == null)
continue;
if (permissionRolesAttribute.Roles.Contains(role))
{
var permissionItem = (Permission)Enum.Parse(permissionType, permissionName, false);
permissions.Add(permissionItem);
}
}
return permissions;
}
}
}