From 26134397fa17e3343585d036919b755ee4b29d8d Mon Sep 17 00:00:00 2001 From: IO420 <320154041@pcpuma.acatlan.unam.mx> Date: Wed, 29 Oct 2025 17:42:34 -0600 Subject: [PATCH] change guard --- .../Monedero/persona/google-auth.guard.ts | 22 +++++++++++++------ .../Monedero/persona/persona.controller.ts | 13 +---------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/modules/Monedero/persona/google-auth.guard.ts b/src/modules/Monedero/persona/google-auth.guard.ts index 230cac3..469fc33 100644 --- a/src/modules/Monedero/persona/google-auth.guard.ts +++ b/src/modules/Monedero/persona/google-auth.guard.ts @@ -1,16 +1,24 @@ -import { - Injectable, - ExecutionContext, - UnauthorizedException, -} from '@nestjs/common'; +import { Injectable, ExecutionContext } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; @Injectable() export class GoogleAuthGuard extends AuthGuard('google') { handleRequest(err, user, info, context: ExecutionContext) { - if (err || !user) { - throw err || new UnauthorizedException(); // deja que el controller maneje el redirect + const req = context.switchToHttp().getRequest(); + const res = context.switchToHttp().getResponse(); + + // Si hay info (por ejemplo, Google retorna ?error=access_denied) + if (info) { + return res.redirect( + `${process.env.FRONTEND_URL}/oauth-callback?error=${info.message || info}`, + ); } + + // Si no hay usuario ni error, permitimos que el controller maneje + if (!user) { + return null; + } + return user; } } diff --git a/src/modules/Monedero/persona/persona.controller.ts b/src/modules/Monedero/persona/persona.controller.ts index cf6ebb1..ac44686 100644 --- a/src/modules/Monedero/persona/persona.controller.ts +++ b/src/modules/Monedero/persona/persona.controller.ts @@ -20,20 +20,9 @@ export class PersonaController { @Get('google/callback') @UseGuards(GoogleAuthGuard) async googleCallback(@Req() req, @Res() res: Response) { - if (req.query.error) { - return res.redirect( - `${process.env.FRONTEND_URL}/oauth-callback?error=${req.query.error}`, - ); - } - const persona = req.user; - if (!persona) { - const error = req.query.error || 'oauth_denied'; - return res.redirect( - `${process.env.FRONTEND_URL}/oauth-callback?error=${error}`, - ); - } + if (!persona) return; const jwt = await this.personaService.generateJwt(persona);