Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using Sahara.Core.Database;
  9. using Sahara.Core.Logging;
  10.  
  11. namespace Sahara.Base.Game.Permissions
  12. {
  13. internal class PermissionManager
  14. {
  15. private readonly Dictionary<int, Permission> _permissions;
  16. private readonly Dictionary<string, PermissionCommand> _permissionCommands;
  17. private readonly Dictionary<int, PermissionGroup> _permissionGroups;
  18. private readonly Dictionary<int, List<string>> _permissionGroupRights;
  19. private readonly Dictionary<int, List<string>> _permissionSubscriptionRights;
  20. private readonly LogManager _logManager;
  21.  
  22. public PermissionManager()
  23. {
  24. _permissions = new Dictionary<int, Permission>();
  25. _permissionCommands = new Dictionary<string, PermissionCommand>();
  26. _permissionGroups = new Dictionary<int, PermissionGroup>();
  27. _permissionGroupRights = new Dictionary<int, List<string>>();
  28. _permissionSubscriptionRights = new Dictionary<int, List<string>>();
  29. _logManager = Sahara.GetServer().GetLogManager();
  30.  
  31. InitializePermissions();
  32. }
  33.  
  34. private void InitializePermissions()
  35. {
  36. using (var mysqlConnection = Sahara.GetServer().GetMySql().GetConnection())
  37. {
  38. LoadPermissions(mysqlConnection);
  39. LoadCommandPermissions(mysqlConnection);
  40. LoadPermissionGroups(mysqlConnection);
  41. LoadPermissionRights(mysqlConnection);
  42. LoadPermissionSubscriptions(mysqlConnection);
  43. }
  44. }
  45.  
  46. private void LoadPermissions(DatabaseConnection mysqlConnection)
  47. {
  48. try
  49. {
  50. var stopwatch = Stopwatch.StartNew();
  51.  
  52. mysqlConnection.SetQuery("SELECT * FROM `permissions`");
  53. var permissionTable = mysqlConnection.GetTable();
  54.  
  55. if (permissionTable == null)
  56. {
  57. return;
  58. }
  59.  
  60. foreach (DataRow permissionRow in permissionTable.Rows)
  61. {
  62. _permissions.Add(Convert.ToInt32(permissionRow["id"]), new Permission(Convert.ToInt32(permissionRow["id"]), Convert.ToString(permissionRow["permission"])));
  63. }
  64.  
  65. stopwatch.Stop();
  66. _logManager.Log("Loaded " + _permissions.Count + " permissions [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
  67. }
  68. catch (Exception exception)
  69. {
  70. var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
  71. _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
  72. _logManager.Log(exception.StackTrace, LogType.Error);
  73. }
  74. }
  75.  
  76. private void LoadCommandPermissions(DatabaseConnection mysqlConnection)
  77. {
  78. try
  79. {
  80. var stopwatch = Stopwatch.StartNew();
  81.  
  82. mysqlConnection.SetQuery("SELECT * FROM `permissions_commands`");
  83. var permissionTable = mysqlConnection.GetTable();
  84.  
  85. if (permissionTable == null)
  86. {
  87. return;
  88. }
  89.  
  90. foreach (DataRow permissionRow in permissionTable.Rows)
  91. {
  92. _permissionCommands.Add(Convert.ToString(permissionRow["command"]), new PermissionCommand(Convert.ToString(permissionRow["command"]), Convert.ToInt32(permissionRow["group_id"]), Convert.ToInt32(permissionRow["subscription_id"])));
  93. }
  94.  
  95. stopwatch.Stop();
  96. _logManager.Log("Loaded " + _permissionCommands.Count + " command permissions [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
  97. }
  98. catch (Exception exception)
  99. {
  100. var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
  101. _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
  102. _logManager.Log(exception.StackTrace, LogType.Error);
  103. }
  104. }
  105.  
  106. private void LoadPermissionGroups(DatabaseConnection mysqlConnection)
  107. {
  108. try
  109. {
  110. var stopwatch = Stopwatch.StartNew();
  111.  
  112. mysqlConnection.SetQuery("SELECT * FROM `permissions_groups`");
  113. var permissionGroupsTable = mysqlConnection.GetTable();
  114.  
  115. if (permissionGroupsTable == null)
  116. {
  117. return;
  118. }
  119.  
  120. foreach (DataRow permissionRow in permissionGroupsTable.Rows)
  121. {
  122. _permissionGroups.Add(Convert.ToInt32(permissionRow["id"]), new PermissionGroup(Convert.ToString(permissionRow["name"]), Convert.ToString(permissionRow["badge"])));
  123. }
  124.  
  125. stopwatch.Stop();
  126. _logManager.Log("Loaded " + _permissionGroups.Count + " permission groups [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
  127. }
  128. catch (Exception exception)
  129. {
  130. var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
  131. _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
  132. _logManager.Log(exception.StackTrace, LogType.Error);
  133. }
  134. }
  135.  
  136. private void LoadPermissionRights(DatabaseConnection mysqlConnection)
  137. {
  138. try
  139. {
  140. var stopwatch = Stopwatch.StartNew();
  141.  
  142. mysqlConnection.SetQuery("SELECT * FROM `permissions_rights`");
  143. var permissionRightsTable = mysqlConnection.GetTable();
  144.  
  145. if (permissionRightsTable == null)
  146. {
  147. return;
  148. }
  149.  
  150. foreach (DataRow permissionRow in permissionRightsTable.Rows)
  151. {
  152. var groupId = Convert.ToInt32(permissionRow["group_id"]);
  153.  
  154. if (!_permissionGroups.ContainsKey(groupId))
  155. {
  156. continue;
  157. }
  158.  
  159. Permission newPermission = null;
  160. var permissionId = Convert.ToInt32(permissionRow["permission_id"]);
  161.  
  162. if (!_permissions.TryGetValue(permissionId, out newPermission))
  163. {
  164. continue;
  165. }
  166.  
  167. if (_permissionGroupRights.ContainsKey(groupId))
  168. {
  169. _permissionGroupRights[groupId].Add(newPermission.PermissionName);
  170. }
  171. else
  172. {
  173. var permissionRightSets = new List<string> {newPermission.PermissionName};
  174. _permissionGroupRights.Add(groupId, permissionRightSets);
  175. }
  176. }
  177.  
  178. stopwatch.Stop();
  179. _logManager.Log("Loaded " + _permissionGroupRights.Count + " permission group rights [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
  180. }
  181. catch (Exception exception)
  182. {
  183. var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
  184. _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
  185. _logManager.Log(exception.StackTrace, LogType.Error);
  186. }
  187. }
  188.  
  189. private void LoadPermissionSubscriptions(DatabaseConnection mysqlConnection)
  190. {
  191. try
  192. {
  193. var stopwatch = Stopwatch.StartNew();
  194.  
  195. mysqlConnection.SetQuery("SELECT * FROM `permissions_subscriptions`");
  196. var permissionRightsTable = mysqlConnection.GetTable();
  197.  
  198. if (permissionRightsTable == null)
  199. {
  200. return;
  201. }
  202.  
  203. foreach (DataRow permissionRow in permissionRightsTable.Rows)
  204. {
  205. Permission newPermission = null;
  206. var permissionId = Convert.ToInt32(permissionRow["permission_id"]);
  207.  
  208. if (!_permissions.TryGetValue(permissionId, out newPermission))
  209. {
  210. continue;
  211. }
  212.  
  213. var subscriptionId = Convert.ToInt32(permissionRow["subscription_id"]);
  214.  
  215. if (_permissionSubscriptionRights.ContainsKey(subscriptionId))
  216. {
  217. _permissionSubscriptionRights[subscriptionId].Add(newPermission.PermissionName);
  218. }
  219. else
  220. {
  221. var permissionRightSets = new List<string> { newPermission.PermissionName };
  222. _permissionSubscriptionRights.Add(subscriptionId, permissionRightSets);
  223. }
  224. }
  225.  
  226. stopwatch.Stop();
  227. _logManager.Log("Loaded " + _permissionSubscriptionRights.Count + " permission subscription rights [" + stopwatch.ElapsedMilliseconds + "ms]", LogType.Information);
  228. }
  229. catch (Exception exception)
  230. {
  231. var method = System.Reflection.MethodBase.GetCurrentMethod().Name;
  232. _logManager.Log("Error in " + method + ": " + exception.Message, LogType.Error);
  233. _logManager.Log(exception.StackTrace, LogType.Error);
  234. }
  235. }
  236. }
  237. }
  238.  
  239. using System;
  240. using System.Collections.Generic;
  241. using System.Linq;
  242. using System.Text;
  243. using System.Threading.Tasks;
  244.  
  245. namespace Sahara.Base.Game.Permissions
  246. {
  247. internal class Permission
  248. {
  249. private readonly int _permissionId;
  250. private readonly string _permissionName;
  251.  
  252. public Permission(int permissionId, string permissionName)
  253. {
  254. _permissionId = permissionId;
  255. _permissionName = permissionName;
  256. }
  257.  
  258. public string PermissionName => _permissionName;
  259. }
  260. }
  261.  
  262. using System;
  263. using System.Collections.Generic;
  264. using System.Linq;
  265. using System.Text;
  266. using System.Threading.Tasks;
  267.  
  268. namespace Sahara.Base.Game.Permissions
  269. {
  270. internal class PermissionCommand
  271. {
  272. private readonly string _commandName;
  273. private readonly int _groupId;
  274. private readonly int _subscriptionIdRequired;
  275.  
  276. public PermissionCommand(string commandName, int groupId, int subscriptionIdRequired)
  277. {
  278. _commandName = commandName;
  279. _groupId = groupId;
  280. _subscriptionIdRequired = subscriptionIdRequired;
  281. }
  282. }
  283. }
  284.  
  285. namespace Sahara.Base.Game.Permissions
  286. {
  287. internal class PermissionGroup
  288. {
  289. private readonly string _permissionGroupName;
  290. private readonly string _permissionBadgeRequired;
  291.  
  292. public PermissionGroup(string permissionGroupName, string permissionBadgeRequired)
  293. {
  294. _permissionGroupName = permissionGroupName;
  295. _permissionBadgeRequired = permissionBadgeRequired;
  296. }
  297. }
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement