63 lines
1.1 KiB
JavaScript
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 };
|