48 lines
2.0 KiB
C#
48 lines
2.0 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
|
|
namespace gehGassi.Permissions
|
|
{
|
|
/// <summary>
|
|
/// Hilfsklasse für die Überprüfung von Permissions
|
|
/// </summary>
|
|
public static class PermissionChecker
|
|
{
|
|
/// <summary>
|
|
/// Püft ob der gepackte Permission-String eine gesuchte Permission beinhaltet
|
|
/// </summary>
|
|
/// <param name="packedPermissions">Gepackte Liste mit Permissions</param>
|
|
/// <param name="permissionName">Gesuchte Permission</param>
|
|
/// <returns>true wenn gefunden, false sonst</returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Fügt eine Permission einem gepackten Permissionstring hinzu
|
|
/// </summary>
|
|
/// <param name="packedPermissions">Gepackte Liste mit Permissions</param>
|
|
/// <param name="permissionName">Gesuchte Permission</param>
|
|
/// <returns>Neuer packed Permisison-String</returns>
|
|
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();
|
|
}
|
|
}
|
|
}
|