permission.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.PermissionModel = void 0;
  4. const database_1 = require("../config/database");
  5. class PermissionModel {
  6. static async getAllPages() {
  7. try {
  8. const query = `
  9. SELECT id, name, path, description, created_at, updated_at
  10. FROM pages
  11. ORDER BY id
  12. `;
  13. const result = await (0, database_1.executeQuery)(query);
  14. return result;
  15. }
  16. catch (error) {
  17. console.error('获取页面列表失败:', error);
  18. throw error;
  19. }
  20. }
  21. static async getPageById(id) {
  22. try {
  23. const query = `
  24. SELECT id, name, path, description, created_at, updated_at
  25. FROM pages
  26. WHERE id = ?
  27. `;
  28. const result = await (0, database_1.executeQuery)(query, [id]);
  29. if (result.length === 0) {
  30. return null;
  31. }
  32. return result[0];
  33. }
  34. catch (error) {
  35. console.error('根据ID获取页面失败:', error);
  36. throw error;
  37. }
  38. }
  39. static async getPageByPath(path) {
  40. try {
  41. const query = `
  42. SELECT id, name, path, description, created_at, updated_at
  43. FROM pages
  44. WHERE path = ?
  45. `;
  46. const result = await (0, database_1.executeQuery)(query, [path]);
  47. if (result.length === 0) {
  48. return null;
  49. }
  50. return result[0];
  51. }
  52. catch (error) {
  53. console.error('根据路径获取页面失败:', error);
  54. throw error;
  55. }
  56. }
  57. static async getUserPermissions(userId) {
  58. try {
  59. const query = `
  60. SELECT p.*
  61. FROM pages p
  62. INNER JOIN user_permissions up ON p.id = up.page_id
  63. WHERE up.user_id = ?
  64. ORDER BY p.id
  65. `;
  66. const result = await (0, database_1.executeQuery)(query, [userId]);
  67. return result;
  68. }
  69. catch (error) {
  70. console.error('获取用户权限失败:', error);
  71. throw error;
  72. }
  73. }
  74. static async checkUserPermission(userId, pagePath) {
  75. try {
  76. const query = `
  77. SELECT COUNT(*) as count
  78. FROM pages p
  79. INNER JOIN user_permissions up ON p.id = up.page_id
  80. WHERE up.user_id = ? AND p.path = ?
  81. `;
  82. const result = await (0, database_1.executeQuery)(query, [userId, pagePath]);
  83. return result[0].count > 0;
  84. }
  85. catch (error) {
  86. console.error('检查用户权限失败:', error);
  87. throw error;
  88. }
  89. }
  90. static async assignPermission(userId, pageId) {
  91. try {
  92. const query = `
  93. INSERT INTO user_permissions (user_id, page_id)
  94. VALUES (?, ?)
  95. ON DUPLICATE KEY UPDATE id = id
  96. `;
  97. const result = await (0, database_1.executeQuery)(query, [userId, pageId]);
  98. const permission = await this.getUserPermissionById(result.insertId);
  99. if (!permission) {
  100. throw new Error('分配权限失败,无法获取创建的权限信息');
  101. }
  102. return permission;
  103. }
  104. catch (error) {
  105. console.error('分配权限失败:', error);
  106. throw error;
  107. }
  108. }
  109. static async assignPermissions(userId, pageIds) {
  110. try {
  111. await this.removeAllUserPermissions(userId);
  112. if (pageIds.length > 0) {
  113. const values = pageIds.map(pageId => `('${userId}', ${pageId})`).join(', ');
  114. const query = `
  115. INSERT INTO user_permissions (user_id, page_id)
  116. VALUES ${values}
  117. `;
  118. await (0, database_1.executeQuery)(query);
  119. }
  120. }
  121. catch (error) {
  122. console.error('批量分配权限失败:', error);
  123. throw error;
  124. }
  125. }
  126. static async removePermission(userId, pageId) {
  127. try {
  128. const query = `
  129. DELETE FROM user_permissions
  130. WHERE user_id = ? AND page_id = ?
  131. `;
  132. const result = await (0, database_1.executeQuery)(query, [userId, pageId]);
  133. return result.affectedRows > 0;
  134. }
  135. catch (error) {
  136. console.error('移除用户权限失败:', error);
  137. throw error;
  138. }
  139. }
  140. static async removeAllUserPermissions(userId) {
  141. try {
  142. const query = `
  143. DELETE FROM user_permissions
  144. WHERE user_id = ?
  145. `;
  146. const result = await (0, database_1.executeQuery)(query, [userId]);
  147. return result.affectedRows > 0;
  148. }
  149. catch (error) {
  150. console.error('移除用户所有权限失败:', error);
  151. throw error;
  152. }
  153. }
  154. static async getUserPermissionById(id) {
  155. try {
  156. const query = `
  157. SELECT id, user_id, page_id, created_at
  158. FROM user_permissions
  159. WHERE id = ?
  160. `;
  161. const result = await (0, database_1.executeQuery)(query, [id]);
  162. if (result.length === 0) {
  163. return null;
  164. }
  165. return result[0];
  166. }
  167. catch (error) {
  168. console.error('根据ID获取用户权限失败:', error);
  169. throw error;
  170. }
  171. }
  172. }
  173. exports.PermissionModel = PermissionModel;
  174. //# sourceMappingURL=permission.js.map