Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Sahara.Core.Database;
- using Sahara.Core.Logging;
- namespace Sahara.Base.Game.Permissions
- {
- internal class PermissionManager
- {
- private readonly Dictionary<int, Permission> _permissions;
- private readonly Dictionary<string, PermissionCommand> _permissionCommands;
- private readonly Dictionary<int, PermissionGroup> _permissionGroups;
- private readonly Dictionary<int, List<string>> _permissionGroupRights;
- private readonly Dictionary<int, List<string>> _permissionSubscriptionRights;
- private readonly LogManager _logManager;
- public PermissionManager()
- {
- _permissions = new Dictionary<int, Permission>();
- _permissionCommands = new Dictionary<string, PermissionCommand>();
- _permissionGroups = new Dictionary<int, PermissionGroup>();
- _permissionGroupRights = new Dictionary<int, List<string>>();
- _permissionSubscriptionRights = new Dictionary<int, List<string>>();
- _logManager = Sahara.GetServer().GetLogManager();
- InitializePermissions();
- }
- private void InitializePermissions()
- {
- using (var mysqlConnection = Sahara.GetServer().GetMySql().GetConnection())
- {
- LoadPermissions(mysqlConnection);
- LoadCommandPermissions(mysqlConnection);
- LoadPermissionGroups(mysqlConnection);
- LoadPermissionRights(mysqlConnection);
- LoadPermissionSubscriptions(mysqlConnection);
- }
- }
- private void LoadPermissions(DatabaseConnection mysqlConnection)
- {
- try
- {
- var stopwatch = Stopwatch.StartNew();
- mysqlConnection.SetQuery("SELECT * FROM `permissions`");
- var permissionTable = mysqlConnection.GetTable();
- if (permissionTable == null)
- {
- return;
- }
- foreach (DataRow permissionRow in permissionTable.Rows)
- {
- _permissions.Add(Convert.ToInt32(permissionRow["id"]), new Permission(Convert.ToInt32(permissionRow["id"]), Convert.ToString(permissionRow["permission"])));
- }
- stopwatch.Stop();
- _logManager.Log("Loaded " + _permissions.Count + " permissions [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
- }
- catch (Exception exception)
- {
- var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
- _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
- _logManager.Log(exception.StackTrace, LogType.Error);
- }
- }
- private void LoadCommandPermissions(DatabaseConnection mysqlConnection)
- {
- try
- {
- var stopwatch = Stopwatch.StartNew();
- mysqlConnection.SetQuery("SELECT * FROM `permissions_commands`");
- var permissionTable = mysqlConnection.GetTable();
- if (permissionTable == null)
- {
- return;
- }
- foreach (DataRow permissionRow in permissionTable.Rows)
- {
- _permissionCommands.Add(Convert.ToString(permissionRow["command"]), new PermissionCommand(Convert.ToString(permissionRow["command"]), Convert.ToInt32(permissionRow["group_id"]), Convert.ToInt32(permissionRow["subscription_id"])));
- }
- stopwatch.Stop();
- _logManager.Log("Loaded " + _permissionCommands.Count + " command permissions [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
- }
- catch (Exception exception)
- {
- var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
- _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
- _logManager.Log(exception.StackTrace, LogType.Error);
- }
- }
- private void LoadPermissionGroups(DatabaseConnection mysqlConnection)
- {
- try
- {
- var stopwatch = Stopwatch.StartNew();
- mysqlConnection.SetQuery("SELECT * FROM `permissions_groups`");
- var permissionGroupsTable = mysqlConnection.GetTable();
- if (permissionGroupsTable == null)
- {
- return;
- }
- foreach (DataRow permissionRow in permissionGroupsTable.Rows)
- {
- _permissionGroups.Add(Convert.ToInt32(permissionRow["id"]), new PermissionGroup(Convert.ToString(permissionRow["name"]), Convert.ToString(permissionRow["badge"])));
- }
- stopwatch.Stop();
- _logManager.Log("Loaded " + _permissionGroups.Count + " permission groups [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
- }
- catch (Exception exception)
- {
- var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
- _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
- _logManager.Log(exception.StackTrace, LogType.Error);
- }
- }
- private void LoadPermissionRights(DatabaseConnection mysqlConnection)
- {
- try
- {
- var stopwatch = Stopwatch.StartNew();
- mysqlConnection.SetQuery("SELECT * FROM `permissions_rights`");
- var permissionRightsTable = mysqlConnection.GetTable();
- if (permissionRightsTable == null)
- {
- return;
- }
- foreach (DataRow permissionRow in permissionRightsTable.Rows)
- {
- var groupId = Convert.ToInt32(permissionRow["group_id"]);
- if (!_permissionGroups.ContainsKey(groupId))
- {
- continue;
- }
- Permission newPermission = null;
- var permissionId = Convert.ToInt32(permissionRow["permission_id"]);
- if (!_permissions.TryGetValue(permissionId, out newPermission))
- {
- continue;
- }
- if (_permissionGroupRights.ContainsKey(groupId))
- {
- _permissionGroupRights[groupId].Add(newPermission.PermissionName);
- }
- else
- {
- var permissionRightSets = new List<string> {newPermission.PermissionName};
- _permissionGroupRights.Add(groupId, permissionRightSets);
- }
- }
- stopwatch.Stop();
- _logManager.Log("Loaded " + _permissionGroupRights.Count + " permission group rights [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
- }
- catch (Exception exception)
- {
- var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
- _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
- _logManager.Log(exception.StackTrace, LogType.Error);
- }
- }
- private void LoadPermissionSubscriptions(DatabaseConnection mysqlConnection)
- {
- try
- {
- var stopwatch = Stopwatch.StartNew();
- mysqlConnection.SetQuery("SELECT * FROM `permissions_subscriptions`");
- var permissionRightsTable = mysqlConnection.GetTable();
- if (permissionRightsTable == null)
- {
- return;
- }
- foreach (DataRow permissionRow in permissionRightsTable.Rows)
- {
- Permission newPermission = null;
- var permissionId = Convert.ToInt32(permissionRow["permission_id"]);
- if (!_permissions.TryGetValue(permissionId, out newPermission))
- {
- continue;
- }
- var subscriptionId = Convert.ToInt32(permissionRow["subscription_id"]);
- if (_permissionSubscriptionRights.ContainsKey(subscriptionId))
- {
- _permissionSubscriptionRights[subscriptionId].Add(newPermission.PermissionName);
- }
- else
- {
- var permissionRightSets = new List<string> { newPermission.PermissionName };
- _permissionSubscriptionRights.Add(subscriptionId, permissionRightSets);
- }
- }
- stopwatch.Stop();
- _logManager.Log("Loaded " + _permissionSubscriptionRights.Count + " permission subscription rights [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
- }
- catch (Exception exception)
- {
- var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
- _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
- _logManager.Log(exception.StackTrace, LogType.Error);
- }
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Sahara.Base.Game.Permissions
- {
- internal class Permission
- {
- private readonly int _permissionId;
- private readonly string _permissionName;
- public Permission(int permissionId, string permissionName)
- {
- _permissionId = permissionId;
- _permissionName = permissionName;
- }
- public string PermissionName => _permissionName;
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Sahara.Base.Game.Permissions
- {
- internal class PermissionCommand
- {
- private readonly string _commandName;
- private readonly int _groupId;
- private readonly int _subscriptionIdRequired;
- public PermissionCommand(string commandName, int groupId, int subscriptionIdRequired)
- {
- _commandName = commandName;
- _groupId = groupId;
- _subscriptionIdRequired = subscriptionIdRequired;
- }
- }
- }
- namespace Sahara.Base.Game.Permissions
- {
- internal class PermissionGroup
- {
- private readonly string _permissionGroupName;
- private readonly string _permissionBadgeRequired;
- public PermissionGroup(string permissionGroupName, string permissionBadgeRequired)
- {
- _permissionGroupName = permissionGroupName;
- _permissionBadgeRequired = permissionBadgeRequired;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement