import * as plugins from '../plugins.js'; import type { OidcManager } from './classes.oidcmanager.js'; @plugins.smartdata.Manager() export class OidcRefreshToken extends plugins.smartdata.SmartDataDbDoc< OidcRefreshToken, plugins.idpInterfaces.data.IOidcRefreshToken, OidcManager > { public static hashToken(tokenArg: string) { return plugins.smarthash.sha256FromStringSync(tokenArg); } @plugins.smartdata.unI() public id: string; @plugins.smartdata.svDb() public data: plugins.idpInterfaces.data.IOidcRefreshToken['data'] = { tokenHash: '', clientId: '', userId: '', scopes: [], expiresAt: 0, issuedAt: 0, revoked: false, }; public isExpired() { return this.data.expiresAt < Date.now(); } public matchesToken(tokenArg: string) { return this.data.tokenHash === OidcRefreshToken.hashToken(tokenArg); } public async revoke() { this.data.revoked = true; await this.save(); } }