@rsksmart/express-did-auth
Version:
Authentication with Verifiable Credentials for Express.js
36 lines • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionManager = void 0;
const crypto_1 = require("crypto");
const errors_1 = require("../errors");
const defaults_1 = require("../defaults");
class SessionManager {
constructor({ userSessionDuration }, metadata) {
this.metadata = metadata;
this.sessionDuration = userSessionDuration || defaults_1.USER_SESSION_DURATION;
}
createRefreshToken() {
// invalidates prior token if exists
if (this.refreshToken)
this.refreshToken = undefined;
this.refreshToken = crypto_1.randomBytes(64).toString('hex');
this.expirationDate = Date.now() + this.sessionDuration;
return this.refreshToken;
}
renewRefreshToken(oldToken) {
if (!this.refreshToken || !oldToken || oldToken !== this.refreshToken)
throw new Error(errors_1.INVALID_REFRESH_TOKEN);
if (this.expirationDate < Date.now())
throw new Error(errors_1.INVALID_OR_EXPIRED_SESSION);
this.createRefreshToken();
return {
refreshToken: this.refreshToken,
metadata: this.metadata
};
}
getCurrentRefreshToken() {
return this.refreshToken;
}
}
exports.SessionManager = SessionManager;
//# sourceMappingURL=session-manager.js.map