"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class Token {
constructor(_headerEncoded, _payloadEncoded) {
this._headerEncoded = _headerEncoded;
this._payloadEncoded = _payloadEncoded;
}
get _tokenPayload() {
try {
return JSON.parse(Buffer.from(this._payloadEncoded, 'base64').toString());
}
catch (err) {
return {
aud: '',
exp: 0,
iat: 0,
iss: '',
name: '',
nbf: 0,
sub: '',
};
}
}
fromEpoch(epoch) {
const d = new Date(0);
d.setUTCSeconds(epoch);
return d;
}
get Username() {
return this._tokenPayload.name;
}
GetPayload() {
return this._tokenPayload;
}
get ExpirationTime() {
return this.fromEpoch(this._tokenPayload.exp);
}
get NotBefore() {
return this.fromEpoch(this._tokenPayload.nbf);
}
IsValid() {
const now = new Date();
return this._tokenPayload && this.ExpirationTime > now && this.NotBefore < now;
}
get IssuedDate() {
return this.fromEpoch(this._tokenPayload.iat);
}
toString() {
return `${this._headerEncoded}.${this._payloadEncoded}`;
}
static FromHeadAndPayload(headAndPayload) {
const [head, payload] = headAndPayload.split('.');
return new Token(head, payload);
}
static CreateEmpty() {
return new Token('', '');
}
}
exports.Token = Token;
//# sourceMappingURL=Token.js.map |