ekyc

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

logout.ts (827B)


      1 import { AuthRepository } from "#core/application/authn/auth_repository.ts";
      2 import { ExpiredSessionToken } from "#core/domain/session_token.ts";
      3 import { InvalidToken, Token } from "#core/domain/token.ts";
      4 
      5 export type AuthLogoutRequest = {
      6   sessionToken: string;
      7 };
      8 
      9 export class AuthLogoutUseCase {
     10   constructor(private readonly authRepo: AuthRepository) {
     11   }
     12 
     13   async execute(request: AuthLogoutRequest): Promise<void> {
     14     try {
     15       const sessionToken = new Token(request.sessionToken);
     16       const auth = await this.authRepo.findBySessionToken(sessionToken);
     17       auth.logout(sessionToken);
     18       await this.authRepo.store(auth);
     19     } catch (error) {
     20       if (
     21         error instanceof InvalidToken ||
     22         error instanceof ExpiredSessionToken
     23       ) {
     24         return;
     25       }
     26       throw error;
     27     }
     28   }
     29 }