54 lines
1.3 KiB
TypeScript
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 };
|
|
}
|
|
}
|