class TokenManager {
constructor() {
this.tokens = {}; // { token: { expiry: Date, validated: boolean, overridden: boolean } }
this.overrides = {}; // { token: { expiry: Date, validated: boolean, overriddenValue: Date } }
}
/**
* Adds a new token to the manager.
* @param {string} token
* @param {Date} expiry
*/
addToken(token, expiry) {
this.tokens[token] = { expiry: expiry, validated: false, overridden: false };
}
/**
* Validates a token.
* @param {string} token
* @returns {boolean}
*/
validateToken(token) {
if (!this.tokens[token]) {
return false; // Token not found
}
const now = new Date();
if (now > this.tokens[token].expiry) {
return false; // Token expired
}
return true;
}
/**
* Overrides a token's expiry.
* @param {string} token
* @param {Date} newExpiry
*/
overrideTokenExpiry(token, newExpiry) {
if (!this.tokens[token]) {
return false; // Token not found
}
this.tokens[token].overridden = true;
this.tokens[token].expiry = newExpiry;
this.overrides[token] = { expiry: newExpiry, overriddenValue: newExpiry };
}
/**
* Checks if a token has been overridden.
* @param {string} token
* @returns {boolean}
*/
isTokenOverridden(token) {
if (!this.tokens[token]) {
return false;
}
return this.tokens[token].overridden;
}
/**
* Gets the remaining time until a token expires.
* @param {string} token
* @returns {number|null} Remaining time in milliseconds, or null if token is not found or has already expired.
*/
getTokenRemainingTime(token) {
if (!this.tokens[token]) {
return null; // Token not found
}
const now = new Date();
if (now > this.tokens[token].expiry) {
return null; // Token expired
}
const remainingTime = this.tokens[token].expiry.getTime() - now.getTime();
return remainingTime;
}
/**
* Clears all tokens.
*/
clearTokens() {
this.tokens = {};
this.overrides = {};
}
}
export default TokenManager;
Add your comment