public string DescribeAccess(string repoName, string user, CachedPermission level) { var repo = Repos.SingleOrDefault(r => r.Name == repoName); if (repo == null) { return(null); } if (Owners.Contains(user)) { return("(Owner)"); } foreach (var repoAccess in repo.Teams) { if (repoAccess.Permission == level) { foreach (var team in repoAccess.Team.DescendentsAndSelf()) { if (team.Members.Contains(user)) { return(team.GetFullName()); } } } } return("(Collaborator)"); }
public CachedPermission GetPermission(ulong guildId) { if (PermissionCache.TryGetValue(guildId, out var cached)) { return(cached); } else { var comp = GetOrCreateCompetition(guildId); PermissionCache[guildId] = new CachedPermission { AdminRoleId = comp.AdminRole, ModeratorRoleId = comp.ModeratorRole, CachedPermissions = comp.Permissions }; return(PermissionCache[guildId]); } }
public bool?EvaluatePermission(CachedPermission permissions, string commandName, SocketGuildUser user, out PermissionLevel?permissionLevel) { var match = permissions.CachedPermissions.FirstOrDefault(x => x.Key.Equals(commandName.ToLower(), StringComparison.OrdinalIgnoreCase)); if (permissions.CachedPermissions.TryGetValue(commandName.ToLower(), out var value)) { permissionLevel = value; if (value == PermissionLevel.Default) { return(null); } if (value == PermissionLevel.Registered) { return(user.IsRegistered(this, out var _)); } if (value == PermissionLevel.Moderator) { return(user.Roles.Any(x => x.Id == permissions.ModeratorRoleId || x.Id == permissions.AdminRoleId || x.Permissions.Administrator)); } if (value == PermissionLevel.ELOAdmin) { return(user.Roles.Any(x => x.Id == permissions.AdminRoleId || x.Permissions.Administrator)); } if (value == PermissionLevel.ServerAdmin) { return(user.GuildPermissions.Administrator); } if (value == PermissionLevel.Owner) { return(user.Id == user.Guild.OwnerId); } //Returning null is equivalent to level is default return(null); } else { permissionLevel = null; return(null); } }
public static string Markdown(this CachedPermission permission) { return($"`{permission.ToString().ToLower()}`"); }