Example #1
0
        public bool RankHasPermissions(int id, string permission)
        {
            PermissionRank rank = this.TryGetRank(id);

            if (rank != null)
            {
                return(rank.HasPermissions(permission));
            }

            return(false);
        }
Example #2
0
        public void LoadRanks(DatabaseClient dbClient)
        {
            Logging.Write("Loading ranks... ");
            Dictionary <int, PermissionRank> newRanks = new Dictionary <int, PermissionRank>();

            DataTable ranks = dbClient.ReadDataTable("SELECT * FROM ranks ORDER BY id ASC;");

            if (ranks != null && ranks.Rows.Count > 0)
            {
                foreach (DataRow dataRow in ranks.Rows)
                {
                    int id = (int)dataRow["id"];
                    newRanks.Add(id, new PermissionRank(id, (string)dataRow["name"], (string)dataRow["public_name"], (string)dataRow["badge_id"]));
                }

                //then we can load permissions
                DataTable permissionRanks = dbClient.ReadDataTable("SELECT * FROM permissions_ranks");
                if (permissionRanks != null && permissionRanks.Rows.Count > 0)
                {
                    foreach (DataRow dataRow in permissionRanks.Rows)
                    {
                        int rankId = (int)dataRow["rank_id"];

                        PermissionRank rank = null;
                        if (newRanks.TryGetValue(rankId, out rank))
                        {
                            List <string> permissions = new List <string>();
                            for (int i = 1; i < dataRow.ItemArray.Length; i++)
                            {
                                if (dataRow[i] is string) //enum (0, 1) aka bool
                                {
                                    if (TextUtilies.StringToBool((string)dataRow[i]))
                                    {
                                        permissions.Add(dataRow.Table.Columns[i].ColumnName);
                                    }
                                }
                                else if (dataRow[i] is int) //flood times, etc
                                {
                                    string columnName = dataRow.Table.Columns[i].ColumnName;
                                    if (columnName == "floodtime")
                                    {
                                        rank.Floodtime = (int)dataRow[i];
                                    }
                                    else if (columnName == "ha_interval")
                                    {
                                        rank.HaInterval = (int)dataRow[i];
                                    }
                                    else if (columnName == "hal_interval")
                                    {
                                        rank.HalInterval = (int)dataRow[i];
                                    }
                                    else if (columnName == "wired_trigger_limit")
                                    {
                                        rank.WiredTriggerLimit = (int)dataRow[i];
                                    }
                                    else if (columnName == "wired_action_limit")
                                    {
                                        rank.WiredActionLimit = (int)dataRow[i];
                                    }
                                    else if (columnName == "wired_condition_limit")
                                    {
                                        rank.WiredConditionLimit = (int)dataRow[i];
                                    }
                                }
                            }

                            rank.SetPermissions(permissions);
                        }
                    }
                }
            }

            this.Ranks = newRanks;
            Logging.WriteLine("completed!", ConsoleColor.Green);
        }