예제 #1
0
        public static void InsertDiscord(ulong steamID, string discordID, string discordName, Dictionary <ulong, string> RoleData)
        {
            if (steamID == 0)
            {
                Log.Info($"Cannont Insert Discord, SteamId is 0");
                return;
            }

            Log.Info($"DiscordID for {steamID} received from SEDB!... Inserting into player account ({discordID})");
            var AccModule = new PlayerAccountModule();
            var account   = AccModule.GetAccount(steamID);

            account.DiscordData.DiscordID   = ulong.Parse(discordID);
            account.DiscordData.DiscordName = discordName;
            foreach (var role in RoleData)
            {
                if (account.DiscordData.DiscordID == ulong.Parse(discordID))
                {
                    account.DiscordData.DiscordName = discordName;
                    if (!account.DiscordData.Roles.ContainsKey(role.Key))
                    {
                        account.DiscordData.Roles.Add(role.Key, role.Value);
                    }
                }
            }

            AccModule.UpdatePlayerAccount(account);
        }
예제 #2
0
        public bool RankHasPermission(string rank, string cmd, ulong forSteamID)
        {
            Dictionary <string, List <string> > InheritedPerms = new Dictionary <string, List <string> >();
            RankData data = GetRankData(rank);

            PlayerAccountModule.PlayerAccountData Account = PlayerAccountModule.GetAccount(forSteamID);
            if (data == null)
            {
                Log.Error($"GetRankData({rank}) returned null.");
                return(false);
            }
            bool hasPermission = false;

            /*
             * If there ranks in the Inherit list,
             * check their permissions first.
             */
            if (data.Inherits.Count != 0)
            {
                InheritedPerms = GetInheritPermList(forSteamID);

                if (InheritedPerms["Allowed"].Contains("*") && !InheritedPerms["Disallowed"].Contains(cmd))
                {
                    hasPermission = true;
                }
                else if (InheritedPerms["Allowed"].Contains(cmd))
                {
                    hasPermission = true;
                }
                else if (InheritedPerms["Disallowed"].Contains("*") && !InheritedPerms["Allowed"].Contains(cmd))
                {
                    hasPermission = false;
                }
                else if ((InheritedPerms["Disallowed"].Contains(cmd)))
                {
                    hasPermission = false;
                }

                if (hasPermission)
                {
                    return(hasPermission);
                }
            }

            /*
             * Check the players main rank
             * permissions
             */
            if (data.Permissions.Allowed.Count == 0 && data.Permissions.Disallowed.Count == 0)
            {
                return(hasPermission);
            }

            if (data.Permissions.Allowed.Contains("*") && !data.Permissions.Disallowed.Contains(cmd))
            {
                hasPermission = true;
            }
            else if (data.Permissions.Allowed.Contains(cmd))
            {
                hasPermission = true;
            }
            else if (data.Permissions.Disallowed.Contains("*") && !data.Permissions.Allowed.Contains(cmd))
            {
                hasPermission = false;
            }
            else if (data.Permissions.Disallowed.Contains(cmd))
            {
                hasPermission = false;
            }

            if (hasPermission)
            {
                return(hasPermission);
            }


            /*
             * Check the player specific permissions.
             */
            if (Account.Permissions.Allowed.Count == 0 && Account.Permissions.Disallowed.Count == 0)
            {
                return(hasPermission);
            }

            if (Account.Permissions.Allowed.Contains("*") && !Account.Permissions.Disallowed.Contains(cmd))
            {
                hasPermission = true;
            }
            else if (Account.Permissions.Allowed.Contains(cmd))
            {
                hasPermission = true;
            }
            else if (Account.Permissions.Disallowed.Contains("*") && !Account.Permissions.Allowed.Contains(cmd))
            {
                hasPermission = false;
            }
            else if (Account.Permissions.Disallowed.Contains(cmd))
            {
                hasPermission = false;
            }

            //return result
            return(hasPermission);
        }