51 lines
1.9 KiB
C#
51 lines
1.9 KiB
C#
namespace Socialize.Api.Modules.Organizations.Services;
|
|
|
|
public static class OrganizationPermissionRules
|
|
{
|
|
public static IReadOnlyCollection<string> GetPermissionsForRole(string role)
|
|
{
|
|
return role switch
|
|
{
|
|
OrganizationRoles.Owner =>
|
|
[
|
|
OrganizationPermissions.ManageOrganizationSettings,
|
|
OrganizationPermissions.ManageOrganizationMembers,
|
|
OrganizationPermissions.CreateWorkspaces,
|
|
OrganizationPermissions.ManageWorkspaces,
|
|
OrganizationPermissions.ManageBilling,
|
|
OrganizationPermissions.ManageConnectors,
|
|
OrganizationPermissions.AccessOwnedWorkspaces,
|
|
],
|
|
OrganizationRoles.Admin =>
|
|
[
|
|
OrganizationPermissions.ManageOrganizationSettings,
|
|
OrganizationPermissions.ManageOrganizationMembers,
|
|
OrganizationPermissions.CreateWorkspaces,
|
|
OrganizationPermissions.ManageWorkspaces,
|
|
OrganizationPermissions.ManageConnectors,
|
|
OrganizationPermissions.AccessOwnedWorkspaces,
|
|
],
|
|
OrganizationRoles.BillingManager =>
|
|
[
|
|
OrganizationPermissions.ManageBilling,
|
|
OrganizationPermissions.AccessOwnedWorkspaces,
|
|
],
|
|
OrganizationRoles.ConnectorManager =>
|
|
[
|
|
OrganizationPermissions.ManageConnectors,
|
|
OrganizationPermissions.AccessOwnedWorkspaces,
|
|
],
|
|
OrganizationRoles.Member =>
|
|
[
|
|
OrganizationPermissions.AccessOwnedWorkspaces,
|
|
],
|
|
_ => [],
|
|
};
|
|
}
|
|
|
|
public static bool RoleHasPermission(string role, string permission)
|
|
{
|
|
return GetPermissionsForRole(role).Contains(permission, StringComparer.Ordinal);
|
|
}
|
|
}
|