| import { Strategy } from 'passport-local';
|
| import { PassportStrategy } from '@nestjs/passport';
|
| import {
|
| HttpException,
|
| HttpStatus,
|
| Injectable,
|
| UnauthorizedException,
|
| } from '@nestjs/common';
|
| import { AuthService } from './auth.service';
|
|
|
| @Injectable()
|
| export class LocalStrategy extends PassportStrategy(Strategy) {
|
| constructor(private authService: AuthService) {
|
| super({ usernameField: 'identifier' });
|
| }
|
|
|
| async validate(
|
| identifier: string,
|
| password: string,
|
| isAdmin: boolean = false,
|
| ): Promise<any> {
|
| console.log(`IDENTIFIER =>`, identifier);
|
|
|
| const user = await this.authService.validateUser(identifier, password);
|
| if (!user) {
|
| throw new UnauthorizedException('Incorrect username or password');
|
| }
|
|
|
| if ((user && user.deletedAt) || (user && user.isDeleted === true)) {
|
| throw new HttpException(
|
| 'Your account has been deleted',
|
| HttpStatus.FORBIDDEN,
|
| );
|
| }
|
| return user;
|
| }
|
| }
|
|
|