Files
swiss-datashare/backend/src/auth/strategy/jwt.strategy.ts

31 lines
943 B
TypeScript
Raw Normal View History

import { Injectable } from "@nestjs/common";
import { PassportStrategy } from "@nestjs/passport";
import { User } from "@prisma/client";
2023-01-04 11:54:28 +01:00
import { Request } from "express";
import { Strategy } from "passport-jwt";
import { ConfigService } from "src/config/config.service";
import { PrismaService } from "src/prisma/prisma.service";
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor(config: ConfigService, private prisma: PrismaService) {
config.get("internal.jwtSecret");
super({
2023-01-04 11:54:28 +01:00
jwtFromRequest: JwtStrategy.extractJWT,
secretOrKey: config.get("internal.jwtSecret"),
});
}
2023-01-04 11:54:28 +01:00
private static extractJWT(req: Request) {
if (!req.cookies.access_token) return null;
return req.cookies.access_token;
}
2022-10-13 23:57:37 +02:00
async validate(payload: { sub: string }) {
const user: User = await this.prisma.user.findUnique({
where: { id: payload.sub },
});
return user;
}
}