namespace Socialize.Api.Modules.Organizations.Services; public static class OrganizationPermissionRules { public static IReadOnlyCollection 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); } }