From aa611f09b1da7c1002de70090d98d53e57a71aaa Mon Sep 17 00:00:00 2001 From: lemuel Date: Thu, 11 Aug 2022 16:38:56 -0500 Subject: [PATCH] todo al token --- src/auth/auth.controller.ts | 9 ++--- src/auth/auth.service.ts | 63 ++++++++++++++++++++++++++--- src/auth/dto/jwt-payload.ts | 19 ++++++++- src/auth/dto/output/operador.dto.ts | 11 ----- src/auth/dto/output/token.dto.ts | 6 +++ src/auth/dto/output/usuario.dto.ts | 11 ----- 6 files changed, 86 insertions(+), 33 deletions(-) delete mode 100644 src/auth/dto/output/operador.dto.ts create mode 100644 src/auth/dto/output/token.dto.ts delete mode 100644 src/auth/dto/output/usuario.dto.ts diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index 4c742c8..dfdfe29 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -7,15 +7,14 @@ import { AuthService } from './auth.service'; import { LoginAdminDto } from './dto/input/login-admin.dto'; import { LoginOperadorDto } from './dto/input/login-operador.dto'; import { LoginUsuarioDto } from './dto/input/login-usuario.dto'; -import { AuthOperadorOutputDto } from './dto/output/operador.dto'; -import { AuthUsuarioOutputDto } from './dto/output/usuario.dto'; +import { AuthTokenOutputDto } from './dto/output/token.dto'; @Controller('auth') @ApiTags('auth') export class AuthController { constructor(private authService: AuthService) {} - @Serealize(AuthOperadorOutputDto) + @Serealize(AuthTokenOutputDto) @Recaptcha() @Post('login-admin') @ApiOperation({ @@ -36,7 +35,7 @@ export class AuthController { return this.authService.loginAdmin(body.operador, body.password); } - @Serealize(AuthOperadorOutputDto) + @Serealize(AuthTokenOutputDto) @Recaptcha() @Post('login-operador') @ApiOperation({ @@ -62,7 +61,7 @@ export class AuthController { ); } - @Serealize(AuthUsuarioOutputDto) + @Serealize(AuthTokenOutputDto) @Recaptcha() @Post('login-usuario') @ApiOperation({ diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index f2352d3..380c7f7 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -30,7 +30,14 @@ export class AuthService { const payload: JwtPayload = { id_operador: operador.id_operador, - id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario, + nombre: operador.nombre, + operador: operador.operador, + institucion: operador.institucion + ? { id_instituion: operador.institucion.id_institucion } + : null, + tipoUsuario: { + id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario, + }, }; return { operador, token: this.jwtService.sign(payload) }; @@ -53,12 +60,19 @@ export class AuthService { ); const payload: JwtPayload = { - id_modulo: modulo.id_modulo, id_operador: operador.id_operador, - id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario, + id_modulo: modulo.id_modulo, + nombre: operador.nombre, + operador: operador.operador, + institucion: operador.institucion + ? { id_instituion: operador.institucion.id_institucion } + : null, + tipoUsuario: { + id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario, + }, }; - return { operador, token: this.jwtService.sign(payload) }; + return { token: this.jwtService.sign(payload) }; }); } @@ -68,9 +82,48 @@ export class AuthService { .then((usuario) => { this.validarLogin(usuario, password); + const instituciones: { + id_institucion_usuario: number; + institucionCarrera: { + id_institucion_carrera: number; + institucion: { id_institucion: number }; + carrera: { id_carrera: number }; + }; + }[] = []; + + for (let i = 0; i < usuario.instituciones.length; i++) + if ( + usuario.instituciones[i].activo && + !usuario.instituciones[i].multa + ) + instituciones.push({ + id_institucion_usuario: + usuario.instituciones[i].id_institucion_usuario, + institucionCarrera: { + id_institucion_carrera: + usuario.instituciones[i].institucionCarrera + .id_institucion_carrera, + carrera: { + id_carrera: + usuario.instituciones[i].institucionCarrera.carrera + .id_carrera, + }, + institucion: { + id_institucion: + usuario.instituciones[i].institucionCarrera.institucion + .id_institucion, + }, + }, + }); + const payload: JwtPayload = { id_usuario: usuario.id_usuario, - id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario, + nombre: usuario.nombre, + usuario: usuario.usuario, + instituciones: instituciones, + tipoUsuario: { + id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario, + }, }; return { token: this.jwtService.sign(payload), usuario }; diff --git a/src/auth/dto/jwt-payload.ts b/src/auth/dto/jwt-payload.ts index 7399899..a16eb2b 100644 --- a/src/auth/dto/jwt-payload.ts +++ b/src/auth/dto/jwt-payload.ts @@ -1,9 +1,26 @@ export class JwtPayload { - id_tipo_usuario: number; + nombre: string; + + tipoUsuario: { id_tipo_usuario: number }; id_modulo?: number; id_operador?: number; id_usuario?: number; + + operador?: string; + + usuario?: string; + + institucion?: { id_instituion: number }; + + instituciones?: { + id_institucion_usuario: number; + institucionCarrera: { + id_institucion_carrera: number; + institucion: { id_institucion: number }; + carrera: { id_carrera: number }; + }; + }[]; } diff --git a/src/auth/dto/output/operador.dto.ts b/src/auth/dto/output/operador.dto.ts deleted file mode 100644 index fba3ebb..0000000 --- a/src/auth/dto/output/operador.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Expose, Type } from 'class-transformer'; -import { OperadorOutputDto } from '../../../operador/dto/output/operador.dto'; - -export class AuthOperadorOutputDto { - @Expose() - @Type(() => OperadorOutputDto) - operador; - - @Expose() - token; -} diff --git a/src/auth/dto/output/token.dto.ts b/src/auth/dto/output/token.dto.ts new file mode 100644 index 0000000..6f453e5 --- /dev/null +++ b/src/auth/dto/output/token.dto.ts @@ -0,0 +1,6 @@ +import { Expose } from 'class-transformer'; + +export class AuthTokenOutputDto { + @Expose() + token; +} diff --git a/src/auth/dto/output/usuario.dto.ts b/src/auth/dto/output/usuario.dto.ts deleted file mode 100644 index 82174aa..0000000 --- a/src/auth/dto/output/usuario.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Expose, Type } from 'class-transformer'; -import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto'; - -export class AuthUsuarioOutputDto { - @Expose() - token; - - @Expose() - @Type(() => UsuariosOutputDto) - usuario; -}