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