Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | 1x 1x 1x 1x 1x 2x 7x 7x 7x 7x 7x 7x 7x 5x 5x 2x 3x 5x 5x 2x 3x 1x 1x 1x 1x | // Copyright (C) 2017 Norman Breau // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. import * as jwt from 'jsonwebtoken'; import {Token} from './Token'; import {IJWTVerifyOptions} from './IJWTVerifyOptions'; import {JWTVerifyOptionsParser} from './JWTVerifyOptionsParser'; import {randomBytes} from 'crypto'; export class TokenManager { private secret: string; public constructor(secret: string) { this.secret = secret; } public sign(payload: {[key: string]: any}, expiresIn: string | number): Promise<Token> { return new Promise<Token>((resolve, reject) => { randomBytes(64, (err: Error, buffer: Buffer) => { Iif (err) { reject(err); return; } // eslint-disable-next-line @typescript-eslint/camelcase payload.__bt__salt = buffer.toString('hex'); jwt.sign(payload, this.secret, { expiresIn : expiresIn }, (error: Error, token: string) => { Iif (error) { return reject(error); } return resolve(new Token(token)); }); }); }); } public verify(token: Token, options?: IJWTVerifyOptions): Promise<any> { return new Promise<any>((resolve, reject) => { // placed inside the promise in the event that a reject would be required. if (!options) { options = { enableExpiration: true }; } else Iif (options.enableExpiration === undefined) { options.enableExpiration = true; } jwt.verify(token.getSignature(), this.secret, JWTVerifyOptionsParser.parse(options), (error, decoded) => { if (error) { return reject(error); } return resolve(decoded); }); }); } public decode(token: Token): Promise<any> { return new Promise<any>((resolve, reject) => { try { const decoded: any = jwt.decode(token.getSignature()); resolve(decoded); } catch (ex) { reject(ex); } }); } } |