Forge
csharp4405de34
1using IntercomService.Data;
2using Microsoft.EntityFrameworkCore;
3
4namespace IntercomService.Services;
5
6public sealed class TeamRoleAuthorization
7{
8 public static bool CanManageMembers(string role) => TeamRoles.IsOwnerOrAdmin(role);
9
10 public static bool CanManageInvites(string role) => TeamRoles.IsOwnerOrAdmin(role);
11
12 public static bool CanManageAgents(string role) => TeamRoles.IsOwnerOrAdmin(role);
13
14 /// <summary>Append transport events (human or on behalf of agent). Guest — read-only.</summary>
15 public static bool CanPublishMessages(string role) =>
16 TeamRoles.Rank(role) >= TeamRoles.Rank(TeamRoles.Member);
17
18 public static bool CanPatchTeam(string role) => TeamRoles.IsOwnerOrAdmin(role);
19
20 public static bool CanChangeJoinPolicy(string role) =>
21 string.Equals(role, TeamRoles.Owner, StringComparison.Ordinal);
22
23 public static bool CanPromoteToOwner(string callerRole) =>
24 string.Equals(callerRole, TeamRoles.Owner, StringComparison.Ordinal);
25
26 public static bool MeetsMinimum(string actualRole, string minimumRole) =>
27 TeamRoles.Rank(actualRole) >= TeamRoles.Rank(minimumRole);
28}
29
View only · write via MCP/CIDE