Can now pass settings to new Token.

This commit is contained in:
2022-03-06 10:34:48 +01:00
parent 90f3d86511
commit d8e951c2ef

View File

@@ -1,10 +1,11 @@
const User = require('src/user/user'); const User = require("src/user/user");
const jwt = require('jsonwebtoken'); const jwt = require("jsonwebtoken");
class Token { class Token {
constructor(user, admin=false) { constructor(user, admin = false, settings = null) {
this.user = user; this.user = user;
this.admin = admin; this.admin = admin;
this.settings = settings;
} }
/** /**
@@ -13,14 +14,12 @@ class Token {
* @returns {String} * @returns {String}
*/ */
toString(secret) { toString(secret) {
const username = this.user.username; const { user, admin, settings } = this;
const admin = this.admin;
let data = { username }
if (admin) let data = { username: user.username, settings };
data = { ...data, admin } if (admin) data["admin"] = admin;
return jwt.sign(data, secret, { expiresIn: '90d' }); return jwt.sign(data, secret, { expiresIn: "90d" });
} }
/** /**
@@ -30,15 +29,12 @@ class Token {
* @returns {Token} * @returns {Token}
*/ */
static fromString(jwtToken, secret) { static fromString(jwtToken, secret) {
let username = null; const token = jwt.verify(jwtToken, secret, { clockTolerance: 10000 });
if (token.username == null) throw new Error("Malformed token");
const token = jwt.verify(jwtToken, secret, { clockTolerance: 10000 }) const { username, admin, settings } = token;
if (token.username === undefined || token.username === null) const user = new User(username);
throw new Error('Malformed token') return new Token(user, admin, settings);
username = token.username
const user = new User(username)
return new Token(user)
} }
} }