AccessControl.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. const db = require('../plugin/DataBase/db')
  2. const Redis = require('../plugin/DataBase/Redis')
  3. class AccessControl {
  4. async checkSession(uuid, session) {
  5. return (await Redis.get(`userSession:${uuid}`)) === session
  6. }
  7. async isBanned(uuid) {
  8. const sql = 'SELECT COALESCE(is_banned, 0) AS is_banned FROM users WHERE uuid = ?'
  9. const rows = await db.query(sql, [uuid])
  10. return Number(rows[0]?.is_banned) === 1
  11. }
  12. async invalidateSession(uuid) {
  13. await Redis.del(`userSession:${uuid}`)
  14. }
  15. async getPermission(uuid) {
  16. const sql = 'SELECT permission FROM users WHERE uuid = ?'
  17. const rows = await db.query(sql, [uuid])
  18. return rows[0]?.permission || []
  19. }
  20. async checkJwAccount(uuid, username) {
  21. const sql = 'SELECT password FROM jw_account WHERE create_user = ? AND state = 1 AND username = ?'
  22. const rows = await db.query(sql, [uuid, username]);
  23. if (!rows || rows.length !== 1 || !rows[0].password)
  24. return false
  25. return rows[0]?.password
  26. }
  27. }
  28. module.exports = new AccessControl();