41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
namespace Backend.Security;
|
|
|
|
public static class AdminRoles
|
|
{
|
|
public const string Viewer = "viewer";
|
|
public const string ContentAdmin = "content_admin";
|
|
public const string Admin = "admin";
|
|
public const string Owner = "owner";
|
|
|
|
public static string Normalize(string? role)
|
|
{
|
|
var normalizedRole = (role ?? string.Empty).Trim().ToLowerInvariant().Replace('-', '_');
|
|
|
|
return normalizedRole switch
|
|
{
|
|
Owner => Owner,
|
|
Admin => Admin,
|
|
ContentAdmin => ContentAdmin,
|
|
_ => Viewer,
|
|
};
|
|
}
|
|
|
|
public static bool IsKnownRole(string? role)
|
|
{
|
|
var normalizedRole = (role ?? string.Empty).Trim().ToLowerInvariant().Replace('-', '_');
|
|
return normalizedRole is Viewer or ContentAdmin or Admin or Owner;
|
|
}
|
|
|
|
public static bool CanAccessAdmin(string? role) =>
|
|
Normalize(role) is ContentAdmin or Admin or Owner;
|
|
|
|
public static bool CanManageContent(string? role) =>
|
|
Normalize(role) is ContentAdmin or Admin or Owner;
|
|
|
|
public static bool CanManageAdminWorkspace(string? role) =>
|
|
Normalize(role) is Admin or Owner;
|
|
|
|
public static bool CanManageOperationalSettings(string? role) =>
|
|
Normalize(role) is Owner;
|
|
}
|