import { BadRequestException, Injectable, UnauthorizedException, } from '@nestjs/common'; import { UsersService } from '../users/users.service'; import { LoginDTO } from '../dtos/loginDTO'; import { JwtService } from '@nestjs/jwt'; import { UsuarioEntity } from '../entities/usuario.entity'; @Injectable() export class AuthService { constructor( private usersService: UsersService, private jwtService: JwtService, ) {} async signIn(loginDto: LoginDTO): Promise { let user: UsuarioEntity; switch (loginDto.tipo_usuario) { case 1: // Administrador user = await this.usersService.findAdmin(loginDto); break; case 2: // Alumno user = await this.usersService.findStudent(loginDto); break; case 3: // Trabajadores user = await this.usersService.findWorker(loginDto); break; case 4: // Académicos user = await this.usersService.findWorker(loginDto); break; default: throw new BadRequestException(); break; } if (user === null) { throw new UnauthorizedException(); } const payload = { id: user.id, userType: user.tipo_usuario_id }; const AT = await this.jwtService.signAsync(payload); return { accessToken: AT }; } }