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();
}
}
}