AccessControl.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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) {
  18. if (Array.isArray(maintainers) && maintainers.length > 0) {
  19. let uuids = [];
  20. let queries = maintainers.map(async (maintainer) => {
  21. const sql = 'SELECT uuid FROM `users` WHERE username = ?';
  22. const rows = await db.query(sql, [maintainer]);
  23. if (!rows || rows.length === 0) {
  24. throw new Error(`未找到已认证用户: ${maintainer}`);
  25. }
  26. const uuid = rows[0].uuid;
  27. return uuid;
  28. });
  29. try {
  30. uuids = await Promise.all(queries);
  31. } catch (error) {
  32. throw error;
  33. }
  34. return uuids;
  35. }
  36. return [];
  37. }
  38. }
  39. module.exports = new AccessControl();