@dataswift/hat-js
Version:
HAT JavaScript SDK for web and Node.js
53 lines (52 loc) • 2.25 kB
JavaScript
;
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;