AccessControl.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const db = require('../plugin/DataBase/db');
  2. class AccessControl {
  3. async checkSession(uuid, session) {
  4. const sql = 'SELECT uuid, session FROM users WHERE uuid = ? AND session = ?';
  5. const rows = await db.query(sql, [uuid, session]);
  6. return rows.length > 0;
  7. }
  8. async getPermission(uuid) {
  9. const groups = [];
  10. const sql = 'SELECT admin, manage FROM users WHERE uuid = ?';
  11. const rows = await db.query(sql, [uuid]);
  12. if (rows.length === 0) return groups;
  13. if (rows[0].admin === 1) groups.push('admin');
  14. if (rows[0].manage === 1) groups.push('manage');
  15. return groups;
  16. }
  17. async checkUser(maintainers, isAdmin = false) {
  18. if (Array.isArray(maintainers) && maintainers.length > 0) {
  19. let uuids = [];
  20. let queries = maintainers.map(async (maintainer) => {
  21. let sql = 'SELECT uuid FROM `users` WHERE username = ?';
  22. if(isAdmin)
  23. sql = 'SELECT uuid FROM `users` WHERE username = ? AND manage = 1';
  24. const rows = await db.query(sql, [maintainer]);
  25. if (!rows || rows.length === 0) {
  26. throw new Error(`未找到已认证用户: ${maintainer}`);
  27. }
  28. const uuid = rows[0].uuid;
  29. return uuid;
  30. });
  31. try {
  32. uuids = await Promise.all(queries);
  33. } catch (error) {
  34. throw error;
  35. }
  36. return uuids;
  37. }
  38. return [];
  39. }
  40. }
  41. module.exports = new AccessControl();