using System; using System.ComponentModel; using System.Linq; namespace gehGassi.Permissions { /// /// Hilfsklasse für die Überprüfung von Permissions /// public static class PermissionChecker { /// /// Püft ob der gepackte Permission-String eine gesuchte Permission beinhaltet /// /// Gepackte Liste mit Permissions /// Gesuchte Permission /// true wenn gefunden, false sonst public static bool ThisPermissionIsAllowed(this string packedPermissions, string permissionName) { var usersPermissions = packedPermissions.UnpackPermissionsFromString().ToArray(); if (!Enum.TryParse(permissionName, true, out Permission permissionToCheck)) throw new InvalidEnumArgumentException($"{permissionName} could not be converted to a {nameof(Permission)}."); return usersPermissions.Contains(permissionToCheck); } /// /// Fügt eine Permission einem gepackten Permissionstring hinzu /// /// Gepackte Liste mit Permissions /// Gesuchte Permission /// Neuer packed Permisison-String public static string AddPermission(this string packedPermissions, string permissionName) { var usersPermissions = packedPermissions.UnpackPermissionsFromString().ToList(); if (!Enum.TryParse(permissionName, true, out Permission permissionToCheck)) throw new InvalidEnumArgumentException($"{permissionName} could not be converted to a {nameof(Permission)}."); if (!usersPermissions.Contains(permissionToCheck)) usersPermissions.Add(permissionToCheck); return usersPermissions.PackPermissionsIntoString(); } } }