68 lines
2.4 KiB
C#
68 lines
2.4 KiB
C#
namespace Backend.Security;
|
|
|
|
public static class AdminRoles
|
|
{
|
|
public const string Viewer = "viewer";
|
|
public const string Member = "member";
|
|
public const string Reviewer = "reviewer";
|
|
public const string OrganizationTeam = "organization_team";
|
|
public const string ContentAdmin = "content_admin";
|
|
public const string Admin = "admin";
|
|
public const string Owner = "owner";
|
|
public const string Creator = "creator";
|
|
|
|
public static string Normalize(string? role)
|
|
{
|
|
var normalizedRole = (role ?? string.Empty).Trim().ToLowerInvariant().Replace('-', '_');
|
|
|
|
return normalizedRole switch
|
|
{
|
|
Owner => Owner,
|
|
Creator => Creator,
|
|
Admin => Admin,
|
|
ContentAdmin => ContentAdmin,
|
|
"creator_role" => Creator,
|
|
"creatorrolle" => Creator,
|
|
"admins" => Admin,
|
|
"mitglied" => Member,
|
|
"member" => Member,
|
|
"reviewer" => Reviewer,
|
|
"organisation_team" => OrganizationTeam,
|
|
"organisationteam" => OrganizationTeam,
|
|
"organization_team" => OrganizationTeam,
|
|
"organizationteam" => OrganizationTeam,
|
|
_ => Viewer,
|
|
};
|
|
}
|
|
|
|
public static bool IsKnownRole(string? role)
|
|
{
|
|
var normalizedRole = (role ?? string.Empty).Trim().ToLowerInvariant().Replace('-', '_');
|
|
return Normalize(normalizedRole) is Viewer or Member or Reviewer or OrganizationTeam or ContentAdmin or Admin or Owner or Creator;
|
|
}
|
|
|
|
public static bool CanAccessAdmin(string? role) =>
|
|
Normalize(role) is Member or Reviewer or OrganizationTeam or ContentAdmin or Admin or Owner or Creator;
|
|
|
|
public static bool CanManageContent(string? role) =>
|
|
Normalize(role) is ContentAdmin or Admin or Owner or Creator;
|
|
|
|
public static bool CanManageAdminWorkspace(string? role) =>
|
|
Normalize(role) is Admin or Owner or Creator;
|
|
|
|
public static bool CanManageOperationalSettings(string? role) =>
|
|
Normalize(role) is Owner or Creator;
|
|
|
|
public static bool CanManageTeam(string? role) =>
|
|
Normalize(role) is Admin or Owner or Creator;
|
|
|
|
public static bool CanResetTeamPasswords(string? role) =>
|
|
Normalize(role) is Owner or Creator;
|
|
|
|
public static bool CanDeleteTeamMembers(string? role) =>
|
|
Normalize(role) is Owner or Creator;
|
|
|
|
public static bool IsPrivilegedFullControlRole(string? role) =>
|
|
Normalize(role) is Owner or Creator;
|
|
}
|