Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import { Controller, Post, Body, Req, HttpCode, HttpStatus, } from '@nestjs/common'; import { IdentityService } from '../../../platform/identity/identity.service'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; class MobileSocialLoginDto { idToken: string; firstName?: string; // Apple only (first auth) lastName?: string; // Apple only (first auth) fingerprint?: any; // Device fingerprint for trust } @Controller('api/v1/mobile/auth') @ApiTags('MobileIdentityAuth') export class MobileIdentityAuthController { constructor(private readonly identityService: IdentityService) {} @Post('google') @HttpCode(HttpStatus.OK) @ApiOperation({ summary: 'Login with google operation' }) @ApiResponse({ status: 201, description: 'Operation successful' }) async loginWithGoogle(@Body() body: MobileSocialLoginDto, @Req() req: any) { const tenantId = req.headers['x-tenant-id'] || ''; return this.identityService.loginWithGoogle(body.idToken, tenantId, { ipAddress: req.ip, userAgent: req.headers['user-agent'], fingerprint: body.fingerprint, }); } @Post('apple') @HttpCode(HttpStatus.OK) @ApiOperation({ summary: 'Login with apple operation' }) @ApiResponse({ status: 201, description: 'Operation successful' }) async loginWithApple(@Body() body: MobileSocialLoginDto, @Req() req: any) { const tenantId = req.headers['x-tenant-id'] || ''; return this.identityService.loginWithApple( body.idToken, tenantId, { firstName: body.firstName, lastName: body.lastName }, { ipAddress: req.ip, userAgent: req.headers['user-agent'], fingerprint: body.fingerprint, }, ); } } |