private UserPermissions VanillaGetUserPermissions(UInt64 UserId)
        {
            if (!File.Exists($"./data/{UserId}/permissions.json"))
            {
                CreateUserPermissions(UserId);
            }

            return(UserPermissions.Deserialize(UserId).Update(DefaultPermissions.Deserialize()));
        }
        private RolePermissions VanillaGetRolePermissions(UInt64 RoleId)
        {
            if (!File.Exists($"./data/role-permissions/{RoleId}.json"))
            {
                CreateRolePermissions(RoleId);
            }

            return(RolePermissions.Deserialize(RoleId).Update(DefaultPermissions.Deserialize()));
        }
        public static Boolean HasPermission(this DiscordMember member, String permission)
        {
            UserPermissions permissions = activeEngine.GetUserPermissions(member.Id);

            if (permissions.IsAdministrator)
            {
                return(true);
            }

            if (permissions[permission] == PermissionValue.Allowed)
            {
                return(true);
            }
            else if (permissions[permission] == PermissionValue.Denied)
            {
                return(false);
            }

            List <UInt64> roles = permissions.AssignedRoles.ToList();

            roles.AddRange(from v in member.Roles
                           where !roles.Contains(v.Id)
                           select v.Id);

            while (roles.Count != 0)
            {
                RolePermissions rolePermissions = activeEngine.GetRolePermissions(roles[0]);

                if (rolePermissions.IsAdministrator || rolePermissions[permission] == PermissionValue.Allowed)
                {
                    return(true);
                }
                else if (rolePermissions[permission] == PermissionValue.Denied)
                {
                    return(false);
                }

                if (rolePermissions.Parent != 0)
                {
                    roles.Add(rolePermissions.Parent);
                }

                roles.Remove(roles[0]);
            }

            DefaultPermissions defaults = DefaultPermissions.Deserialize();

            if (defaults[permission] == PermissionValue.Allowed || defaults.IsAdministrator)
            {
                return(true);
            }

            return(false);
        }
        private void VanillaSetUserAdministrator(UInt64 UserId, Boolean Administrator)
        {
            if (!File.Exists($"./data/{UserId}/permissions.json"))
            {
                CreateUserPermissions(UserId);
            }

            UserPermissions permissions = UserPermissions.Deserialize(UserId).Update(DefaultPermissions.Deserialize());

            permissions.IsAdministrator = Administrator;
            UserPermissions.Serialize(permissions);
        }
        private void VanillaSetRoleAdministrator(UInt64 RoleId, Boolean Administrator)
        {
            if (!File.Exists($"./data/role-permissions/{RoleId}.json"))
            {
                CreateRolePermissions(RoleId);
            }

            RolePermissions permissions = RolePermissions.Deserialize(RoleId).Update(DefaultPermissions.Deserialize());

            permissions.IsAdministrator = Administrator;
            RolePermissions.Serialize(permissions);
        }
        private void VanillaCreateUserPermissions(UInt64 UserId)
        {
            UserPermissions permissions = UserPermissions.Create(UserId, DefaultPermissions.Deserialize());

            Directory.CreateDirectory($"./data/{UserId}");

            if (!File.Exists($"./data/{UserId}/permissions.json"))
            {
                File.Create($"./data/{UserId}/permissions.json").Close();
            }

            UserPermissions.Serialize(permissions);
        }
        private void VanillaCreateRolePermissions(UInt64 RoleId)
        {
            RolePermissions permissions = RolePermissions.Create(RoleId, DefaultPermissions.Deserialize());

            Directory.CreateDirectory($"./data/role-permissions");

            if (!File.Exists($"./data/role-permissions/{RoleId}.json"))
            {
                File.Create($"./data/role-permissions/{RoleId}.json").Close();
            }

            RolePermissions.Serialize(permissions);
        }
        private static String[] ParseWildcards(String permission)
        {
            if (!permission.Contains('*'))
            {
                return(new[] { permission });
            }

            if (permission[permission.IndexOf('*') - 1] != '.')
            {
                throw new ArgumentException("Invalid wildcard.", nameof(permission));
            }

            DefaultPermissions permissions = DefaultPermissions.Deserialize();

            return((from x in permissions.Permissions
                    where x.Key.StartsWith(permission.Split('*')[0])
                    select x.Key).ToArray());
        }
        private void VanillaGrantUserPermissions(UInt64 UserId, String[] Permissions)
        {
            if (!File.Exists($"./data/{UserId}/permissions.json"))
            {
                CreateUserPermissions(UserId);
            }

            UserPermissions permissions = UserPermissions.Deserialize(UserId).Update(DefaultPermissions.Deserialize());

            foreach (String v in Permissions)
            {
                foreach (String v1 in ParseWildcards(v))
                {
                    permissions[v1] = PermissionValue.Allowed;
                }
            }

            UserPermissions.Serialize(permissions);
        }
示例#10
0
        private void VanillaGrantRolePermissions(UInt64 RoleId, String[] Permissions)
        {
            if (!File.Exists($"./data/role-permissions/{RoleId}.json"))
            {
                CreateRolePermissions(RoleId);
            }

            RolePermissions permissions = RolePermissions.Deserialize(RoleId).Update(DefaultPermissions.Deserialize());

            foreach (String v in Permissions)
            {
                foreach (String v1 in ParseWildcards(v))
                {
                    permissions[v1] = PermissionValue.Allowed;
                }
            }

            RolePermissions.Serialize(permissions);
        }
示例#11
0
        private void VanillaUpdateUserPermissions(UInt64 UserId)
        {
            UserPermissions permissions = UserPermissions.Deserialize(UserId);

            UserPermissions.Serialize(permissions.Update(DefaultPermissions.Deserialize()));
        }
示例#12
0
        private void VanillaUpdateRolePermissions(UInt64 RoleId)
        {
            RolePermissions permissions = RolePermissions.Deserialize(RoleId);

            RolePermissions.Serialize(permissions.Update(DefaultPermissions.Deserialize()));
        }
示例#13
0
        private static DefaultPermissions LoadDefaultPermissions()
        {
            DefaultPermissions permissions = DefaultPermissions.Deserialize();

            return(permissions.ApplyOverrides(DefaultPermissionOverrides.Deserialize()));
        }