safetoken
Advanced tools
Comparing version 1.3.9 to 1.3.10
export declare class SafeToken { | ||
token: string; | ||
refreshT: number; | ||
tokenT: number; | ||
refreshtoken: string; | ||
lastrefreshTime: number; | ||
lastAccessTime: number; | ||
rtStoreKey: string; | ||
key: string; | ||
private FA_token; | ||
private FR_token; | ||
private refreshTime; | ||
private accessTime; | ||
private lastrefreshTime; | ||
private lastAccessTime; | ||
private rtStoreKey; | ||
private key; | ||
constructor(init?: { | ||
@@ -11,0 +11,0 @@ timeWindow?: number; |
@@ -7,23 +7,27 @@ import { readFileSync, writeFileSync } from "node:fs"; | ||
export class SafeToken { | ||
token; | ||
refreshT; | ||
tokenT; | ||
refreshtoken; | ||
// ? full token | ||
FA_token; | ||
FR_token; | ||
refreshTime; | ||
accessTime; | ||
// ? access time | ||
lastrefreshTime; | ||
lastAccessTime; | ||
rtStoreKey = "_refresh_token"; | ||
// ? FR key | ||
rtStoreKey = "_safetoken"; | ||
key; | ||
constructor(init) { | ||
// ? reset access tokens | ||
this.token = SafeToken.create(); | ||
this.FA_token = SafeToken.create(); | ||
this.lastAccessTime = Date.now(); | ||
// ? time window setup | ||
this.tokenT = init?.timeWindow || 3600_000; | ||
this.refreshT = init?.rtDays || 29; | ||
this.accessTime = init?.timeWindow || 3600_000; | ||
this.refreshTime = init?.rtDays || 29; | ||
// ? refresh file name | ||
this.rtStoreKey = init?.rtStoreKey || "_refresh_token"; | ||
if (init?.rtStoreKey) | ||
this.rtStoreKey = init.rtStoreKey; | ||
//? setup encryption keys | ||
this.key = init?.encryptionKey || ""; | ||
// ? retrieve last refresh tokens | ||
[this.lastrefreshTime, this.refreshtoken] = SafeToken.retrToken(this.rtStoreKey); | ||
[this.lastrefreshTime, this.FR_token] = SafeToken.retrToken(this.rtStoreKey); | ||
} | ||
@@ -38,10 +42,10 @@ newAccessToken(data = "", _r) { | ||
let si = Math.floor(Math.random() * | ||
((_r ? this.refreshtoken.length : this.token.length) - 10 + 1)); | ||
((_r ? this.FR_token.length : this.FA_token.length) - 10 + 1)); | ||
if (String(si).length < 2) { | ||
si = (si || 1) * 10; | ||
} | ||
if (_r && si > this.refreshtoken.length - 15) { | ||
if (_r && si > this.FR_token.length - 15) { | ||
si = si - 77; | ||
} | ||
if (!_r && si > this.token.length - 15) { | ||
if (!_r && si > this.FA_token.length - 15) { | ||
si = si - 77; | ||
@@ -51,3 +55,3 @@ } | ||
":" + | ||
(data + (_r ? this.refreshtoken : this.token).slice(si - 10, si))); | ||
(data + (_r ? this.FR_token : this.FA_token).slice(si - 10, si))); | ||
} | ||
@@ -60,3 +64,3 @@ newRefreshToken(data = "", _r) { | ||
const diff = SafeToken.timeDiff(this.lastAccessTime); | ||
if (diff.ms > this.tokenT) { | ||
if (diff.ms > this.accessTime) { | ||
this.resetAccessToken(); | ||
@@ -75,3 +79,3 @@ } | ||
} | ||
const key = (_r ? this.refreshtoken : this.token).slice(Number(si) - 10, Number(si)); | ||
const key = (_r ? this.FR_token : this.FA_token).slice(Number(si) - 10, Number(si)); | ||
return key === hash && data; | ||
@@ -81,3 +85,3 @@ } | ||
const diff = SafeToken.timeDiff(this.lastrefreshTime); | ||
if (diff.day > this.refreshT) { | ||
if (diff.day > this.refreshTime) { | ||
this.resetRefreshToken(); | ||
@@ -88,9 +92,9 @@ } | ||
resetAccessToken() { | ||
this.token = SafeToken.create(); | ||
this.FA_token = SafeToken.create(); | ||
this.lastAccessTime = Date.now(); | ||
} | ||
resetRefreshToken() { | ||
this.refreshtoken = SafeToken.create(); | ||
this.FR_token = SafeToken.create(); | ||
this.lastrefreshTime = Date.now(); | ||
writeFileSync(this.rtStoreKey, this.lastrefreshTime + ":" + ":" + this.refreshtoken); | ||
writeFileSync(this.rtStoreKey, this.lastrefreshTime + ":" + ":" + this.FR_token); | ||
} | ||
@@ -115,4 +119,9 @@ static timeDiff(timestamp) { | ||
if (data) { | ||
const [date, iv, lastStoredToken] = data.split(":"); | ||
rt = [Number(date), lastStoredToken]; | ||
const [date, lastStoredToken] = data.split(":"); | ||
if (data && lastStoredToken) { | ||
rt = [Number(date), lastStoredToken]; | ||
} | ||
else { | ||
writeFileSync(rtStoreKey, rt[0] + ":" + rt[1]); | ||
} | ||
} | ||
@@ -119,0 +128,0 @@ } |
{ | ||
"name": "safetoken", | ||
"version": "1.3.9", | ||
"version": "1.3.10", | ||
"description": "SafeToken - Generate/Validate secured tokens for authentication seamlessly", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
12176
181