UNPKG

2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const jwt = require("jsonwebtoken");
4const Token_1 = require("./Token");
5const JWTVerifyOptionsParser_1 = require("./JWTVerifyOptionsParser");
6const crypto_1 = require("crypto");
7class TokenManager {
8 constructor(secret) {
9 this.secret = secret;
10 }
11 sign(payload, expiresIn) {
12 return new Promise((resolve, reject) => {
13 crypto_1.randomBytes(64, (err, buffer) => {
14 if (err) {
15 reject(err);
16 return;
17 }
18 payload.__bt__salt = buffer.toString('hex');
19 jwt.sign(payload, this.secret, {
20 expiresIn: expiresIn
21 }, (error, token) => {
22 if (error) {
23 return reject(error);
24 }
25 return resolve(new Token_1.Token(token));
26 });
27 });
28 });
29 }
30 verify(token, options) {
31 return new Promise((resolve, reject) => {
32 if (!options) {
33 options = {
34 enableExpiration: true
35 };
36 }
37 else if (options.enableExpiration === undefined) {
38 options.enableExpiration = true;
39 }
40 jwt.verify(token.getSignature(), this.secret, JWTVerifyOptionsParser_1.JWTVerifyOptionsParser.parse(options), (error, decoded) => {
41 if (error) {
42 return reject(error);
43 }
44 return resolve(decoded);
45 });
46 });
47 }
48 decode(token) {
49 return new Promise((resolve, reject) => {
50 try {
51 const decoded = jwt.decode(token.getSignature());
52 resolve(decoded);
53 }
54 catch (ex) {
55 reject(ex);
56 }
57 });
58 }
59}
60exports.TokenManager = TokenManager;
61//# sourceMappingURL=TokenManager.js.map
\No newline at end of file