todo al token

This commit is contained in:
lemuel 2022-08-11 16:38:56 -05:00
parent ffbbe0d3a8
commit aa611f09b1
6 changed files with 86 additions and 33 deletions

View File

@ -7,15 +7,14 @@ import { AuthService } from './auth.service';
import { LoginAdminDto } from './dto/input/login-admin.dto'; import { LoginAdminDto } from './dto/input/login-admin.dto';
import { LoginOperadorDto } from './dto/input/login-operador.dto'; import { LoginOperadorDto } from './dto/input/login-operador.dto';
import { LoginUsuarioDto } from './dto/input/login-usuario.dto'; import { LoginUsuarioDto } from './dto/input/login-usuario.dto';
import { AuthOperadorOutputDto } from './dto/output/operador.dto'; import { AuthTokenOutputDto } from './dto/output/token.dto';
import { AuthUsuarioOutputDto } from './dto/output/usuario.dto';
@Controller('auth') @Controller('auth')
@ApiTags('auth') @ApiTags('auth')
export class AuthController { export class AuthController {
constructor(private authService: AuthService) {} constructor(private authService: AuthService) {}
@Serealize(AuthOperadorOutputDto) @Serealize(AuthTokenOutputDto)
@Recaptcha() @Recaptcha()
@Post('login-admin') @Post('login-admin')
@ApiOperation({ @ApiOperation({
@ -36,7 +35,7 @@ export class AuthController {
return this.authService.loginAdmin(body.operador, body.password); return this.authService.loginAdmin(body.operador, body.password);
} }
@Serealize(AuthOperadorOutputDto) @Serealize(AuthTokenOutputDto)
@Recaptcha() @Recaptcha()
@Post('login-operador') @Post('login-operador')
@ApiOperation({ @ApiOperation({
@ -62,7 +61,7 @@ export class AuthController {
); );
} }
@Serealize(AuthUsuarioOutputDto) @Serealize(AuthTokenOutputDto)
@Recaptcha() @Recaptcha()
@Post('login-usuario') @Post('login-usuario')
@ApiOperation({ @ApiOperation({

View File

@ -30,7 +30,14 @@ export class AuthService {
const payload: JwtPayload = { const payload: JwtPayload = {
id_operador: operador.id_operador, 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) }; return { operador, token: this.jwtService.sign(payload) };
@ -53,12 +60,19 @@ export class AuthService {
); );
const payload: JwtPayload = { const payload: JwtPayload = {
id_modulo: modulo.id_modulo,
id_operador: operador.id_operador, 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) => { .then((usuario) => {
this.validarLogin(usuario, password); 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 = { const payload: JwtPayload = {
id_usuario: usuario.id_usuario, 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 }; return { token: this.jwtService.sign(payload), usuario };

View File

@ -1,9 +1,26 @@
export class JwtPayload { export class JwtPayload {
id_tipo_usuario: number; nombre: string;
tipoUsuario: { id_tipo_usuario: number };
id_modulo?: number; id_modulo?: number;
id_operador?: number; id_operador?: number;
id_usuario?: 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 };
};
}[];
} }

View File

@ -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;
}

View File

@ -0,0 +1,6 @@
import { Expose } from 'class-transformer';
export class AuthTokenOutputDto {
@Expose()
token;
}

View File

@ -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;
}