/* * Acces Levels: * * -1 - banned * * 0 - user * * 1 - moderator * * 2 - editor * * 3 - admin * * 4 - superadmin * * 5 - root */ class User { constructor(name, accessLevel) { if ( typeof accessLevel !== "number" || { "-1": true, 0: true, 1: true, 2: true, 3: true, 4: true, 5: true, }["" + accessLevel] !== true ) { throw new Error( `Invalid access level: ${accessLevel} (must be ranged from -1 to 5)`, ); } this.name = name; this.accessLevel = accessLevel; } static async getUserByName(name) { if (User.cache[name]) return User.cache[name]; if ( !!global.config.rootuser?.activated && name === global.config.rootuser.login ) { const user = new User(name, 5); User.cache[name] = user; return user; } // Потом добавить чтение из БД return null; } static getByToken(token) { const user = global.authed.tokens[token]; return user ?? null; } getUserForAPI(getFullInfo = false) { return { username: this.name, accessLevel: this.accessLevel, }; } } User.cache = {}; module.exports = { User };