Tutorial 4: NestJS Integration
This tutorial demonstrates how to integrate Porkate-Valid8 with a NestJS application for seamless KYC/KYB verification.
1. Install Dependencies
npm install porkate-valid8-nest porkate-valid8 porkate-valid8-identitypass
2. Configure the Module
Basic Setup:
import { Module } from '@nestjs/common';
import { Valid8Module } from 'porkate-valid8-nest';
import { IdentityPassCompositeAdapter } from 'porkate-valid8-identitypass';
@Module({
imports: [
Valid8Module.forRoot({
config: {
defaultAdapter: 'identitypass',
adapters: [
{
name: 'identitypass',
enabled: true,
priority: 1,
config: { apiKey: process.env.IDENTITY_PASS_API_KEY },
},
],
},
factories: {
identitypass: (config) => new IdentityPassCompositeAdapter(config),
},
}),
],
})
export class AppModule {}
Async Setup with ConfigService:
Valid8Module.forRootAsync({
useFactory: (configService: ConfigService) => ({
config: {
defaultAdapter: 'identitypass',
adapters: [
{
name: 'identitypass',
enabled: true,
priority: 1,
config: {
apiKey: configService.get('IDENTITY_PASS_API_KEY'),
},
},
],
},
factories: {
identitypass: (config) => new IdentityPassCompositeAdapter(config),
},
}),
inject: [ConfigService],
})
3. Using the Service in Controllers
import { Controller, Post, Body } from '@nestjs/common';
import { Valid8Service } from 'porkate-valid8-nest';
@Controller('verify')
export class VerificationController {
constructor(private readonly valid8: Valid8Service) {}
@Post('nin')
async verifyNIN(@Body() dto: any) {
return this.valid8.verify('identitypass', 'nin', dto);
}
}
4. Decorator Usage
import { Verify } from 'porkate-valid8-nest';
@Post('nin')
@Verify('identitypass', 'nin')
async verifyNIN(@Body() dto: any) {
// ...
}
See the NestJS package README for more details and advanced usage.