Exemple #1
0
        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)");
        }
Exemple #2
0
 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]);
     }
 }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
 public static string Markdown(this CachedPermission permission)
 {
     return($"`{permission.ToString().ToLower()}`");
 }