UNPKG

@dataswift/hat-js

Version:

HAT JavaScript SDK for web and Node.js

53 lines (52 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HatTokenValidation = void 0; var jwt_decode_1 = require("jwt-decode"); var HatCustomError_1 = require("./HatCustomError"); var HatTokenValidation = /** @class */ (function () { function HatTokenValidation() { } HatTokenValidation.decodeToken = function (encodedToken) { if (!encodedToken) { throw new HatCustomError_1.HatCustomError(HatCustomError_1.HatCustomErrorCauses.tokenValidation, HatCustomError_1.HatCustomErrorMessages.tokenIsUndefined); } try { return jwt_decode_1.default(encodedToken); } catch (e) { throw new HatCustomError_1.HatCustomError(HatCustomError_1.HatCustomErrorCauses.tokenValidation, HatCustomError_1.HatCustomErrorMessages.tokenFailedToDecode); } }; HatTokenValidation.isEncodedTokenExpired = function (token) { var decodedToken = this.decodeToken(token); return this.isExpired(decodedToken); }; HatTokenValidation.isExpired = function (decodedToken) { var dayInSeconds = 86400; // 24*60*60 seconds (one day) var tokenShortLife = 3 * dayInSeconds; // 3 days if (!decodedToken.iat) { return true; } else { var iatDate = new Date(0); var expDate = new Date(0); var dateNow = new Date(); iatDate.setUTCSeconds(decodedToken.iat + tokenShortLife); expDate.setUTCSeconds(decodedToken.exp); return iatDate < dateNow || expDate < dateNow; } }; HatTokenValidation.validateToken = function (token) { return new Promise(function (resolve, reject) { var decodedToken = HatTokenValidation.decodeToken(token); if (HatTokenValidation.isExpired(decodedToken) || !decodedToken.iss) { reject(new HatCustomError_1.HatCustomError(HatCustomError_1.HatCustomErrorCauses.tokenValidation, HatCustomError_1.HatCustomErrorMessages.tokenIsNotValidOrExpired)); } else { resolve(decodedToken); } }); }; return HatTokenValidation; }()); exports.HatTokenValidation = HatTokenValidation;