Files
pdi_api/src/auth/auth.service.ts
T
2024-10-02 19:13:08 -06:00

54 lines
1.3 KiB
TypeScript

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<any> {
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 };
}
}