ekyc

Electronic KYC process with uploading ID document using OAuth 2.1 (experimental)
Log | Files | Refs | README | LICENSE

session_token.ts (745B)


      1 import { SESSION_TOKEN_TTL } from "#core/domain/constants.ts";
      2 import { isSafeEqual, nonceToken } from "#core/domain/crypto.ts";
      3 import { Ephemeral } from "#core/domain/ephemeral.ts";
      4 import { Token } from "#core/domain/token.ts";
      5 import { DomainError } from "#core/domain/error.ts";
      6 
      7 export class SessionToken extends Ephemeral<Token> {
      8   static none() {
      9     return new this();
     10   }
     11 
     12   static issue() {
     13     return new this(
     14       nonceToken(),
     15       Date.now() + SESSION_TOKEN_TTL,
     16     );
     17   }
     18 
     19   grant(candidate: Token) {
     20     return isSafeEqual(
     21       this.valueOf(),
     22       candidate,
     23     );
     24   }
     25 }
     26 
     27 export class ExpiredSessionToken extends DomainError {
     28   constructor(options?: ErrorOptions) {
     29     super("Expired session token", options);
     30   }
     31 }