source-code/
portofolio-backend
Public
typescript28 lines841 B
import { Injectable } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt, Strategy } from 'passport-jwt';
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor() {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: false,
secretOrKey: (() => {
if (process.env.NODE_ENV === 'production' && !process.env.JWT_SECRET) {
throw new Error(
'FATAL: JWT_SECRET environment variable is missing in production!',
);
}
return (
process.env.JWT_SECRET || 'super-secret-key-change-me-in-production'
);
})(),
});
}
validate(payload: { sub: string; email: string }) {
return { userId: payload.sub, email: payload.email };
}
}
About
Fullstack portfolio backend built with NestJS, Prisma, and PostgreSQL. Features JWT authentication, throttler rate limits, cache management, and automated GitHub repository synchronization.
linknre.codes
TypeScriptNestJSPostgreSQLPrisma