|
@@ -0,0 +1,52 @@
|
|
|
|
+const db = require('../plugin/DataBase/db');
|
|
|
|
+
|
|
|
|
+class AccessControl {
|
|
|
|
+ async checkSession(uuid, session) {
|
|
|
|
+ const sql = 'SELECT uuid, session FROM users WHERE uuid = ? AND session = ?';
|
|
|
|
+ const [rows] = await db.query(sql, [uuid, session]);
|
|
|
|
+ return rows.length > 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ async getPermission(uuid) {
|
|
|
|
+ const groups = [];
|
|
|
|
+ const sql = 'SELECT admin, manage FROM users WHERE uuid = ?';
|
|
|
|
+ const [rows] = await db.query(sql, [uuid]);
|
|
|
|
+
|
|
|
|
+ if (rows.length === 0) return groups;
|
|
|
|
+
|
|
|
|
+ if (rows[0].admin === 1) groups.push('admin');
|
|
|
|
+ if (rows[0].manage === 1) groups.push('manage');
|
|
|
|
+
|
|
|
|
+ return groups;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ async checkUser(maintainers) {
|
|
|
|
+ if (Array.isArray(maintainers) && maintainers.length > 0) {
|
|
|
|
+ let uuids = [];
|
|
|
|
+
|
|
|
|
+ let queries = maintainers.map(async (maintainer) => {
|
|
|
|
+ const sql = 'SELECT uuid FROM `users_permission` WHERE name = ?';
|
|
|
|
+ const [rows] = await db.query(sql, [maintainer]);
|
|
|
|
+
|
|
|
|
+ if (!rows || rows.length === 0) {
|
|
|
|
+ throw new Error(`未找到已认证用户: ${maintainer}`);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const uuid = rows[0].uuid;
|
|
|
|
+
|
|
|
|
+ return uuid;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ uuids = await Promise.all(queries);
|
|
|
|
+ } catch (error) {
|
|
|
|
+ throw error;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return uuids;
|
|
|
|
+ }
|
|
|
|
+ return [];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+module.exports = new AccessControl();
|