|
import { ExtractJwt } from 'passport-jwt'; |
|
import { PassportStrategy } from '@nestjs/passport'; |
|
import { Injectable } from '@nestjs/common'; |
|
import { Strategy } from 'passport-custom'; |
|
import { AuthService } from './auth.service'; |
|
import { jwtDecode } from 'jwt-decode'; |
|
|
|
@Injectable() |
|
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { |
|
constructor(private authService: AuthService) { |
|
super(); |
|
} |
|
async validate(req: Request): Promise<any> { |
|
try { |
|
const authHeader = String(req.headers['authorization'] || ''); |
|
if (authHeader.startsWith('Bearer ')) { |
|
const token = authHeader.substring(7, authHeader.length); |
|
const payload:any = jwtDecode(token) as any; |
|
const user = this.authService.validateByEmail(payload.email) |
|
return user ? user : false |
|
} |
|
else{ |
|
return false |
|
} |
|
} catch (error) { |
|
return error |
|
} |
|
|
|
} |
|
} |