ai-adventure-labs/server/api/utils/user.js

63 lines
1.1 KiB
JavaScript

/*
* 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 };