Files
backend/src/integrations/tbank/tbank-token.service.ts
T

36 lines
962 B
TypeScript

import { BadRequestException, Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Environment } from '../../config/env.validation';
import { TbankCrypto } from './tbank.crypto';
@Injectable()
export class TbankTokenService {
private readonly crypto: TbankCrypto;
constructor(config: ConfigService<Environment, true>) {
this.crypto = TbankCrypto.fromBase64(
config.getOrThrow('TOKEN_ENCRYPTION_KEY'),
);
}
encrypt(value: string): string {
return this.crypto.encrypt(value);
}
decrypt(payload: string): string {
return this.crypto.decrypt(payload);
}
async translateInvalidToken<T>(operation: () => Promise<T>): Promise<T> {
try {
return await operation();
} catch (error) {
if (error instanceof Error && error.message === 'INVALID_TBANK_TOKEN') {
throw new BadRequestException({ code: 'INVALID_TBANK_TOKEN' });
}
throw error;
}
}
}