π lib/constants.js
Env variables, JWT secret, token expiry,
import dotenv from 'dotenv';
dotenv.config();
const NODE_ENV = process.env.NODE_ENV || 'development';
const PORT = process.env.PORT || 3000;
const JWT_ACCESS_TOKEN_SECRET =
process.env.JWT_ACCESS_TOKEN_SECRET || 'your_jwt_access_token_secret';
const JWT_REFRESH_TOKEN_SECRET =
process.env.JWT_REFRESH_TOKEN_SECRET || 'your_jwt_refresh_token_secret';
const ACCESS_TOKEN_COOKIE_NAME = 'access-token';
const REFRESH_TOKEN_COOKIE_NAME = 'refresh-token';
const GOOGLE_CLIENT_ID = process.env.GOOGLE_CLIENT_ID;
const GOOGLE_CLIENT_SECRET = process.env.GOOGLE_CLIENT_SECRET;
export {
NODE_ENV,
PORT,
JWT_ACCESS_TOKEN_SECRET,
JWT_REFRESH_TOKEN_SECRET,
ACCESS_TOKEN_COOKIE_NAME,
REFRESH_TOKEN_COOKIE_NAME,
GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET,
};
π lib/token.js
import jwt from 'jsonwebtoken';
import {
JWT_ACCESS_TOKEN_SECRET,
JWT_REFRESH_TOKEN_SECRET,
} from './constants.js';
function generateTokens(userId) {
const accessToken = jwt.sign({ sub: userId }, JWT_ACCESS_TOKEN_SECRET, {
expiresIn: '1h',
});
const refreshToken = jwt.sign({ sub: userId }, JWT_REFRESH_TOKEN_SECRET, {
expiresIn: '1d',
});
return { accessToken, refreshToken };
}
function verifyAccessToken(token) {
const decoded = jwt.verify(token, JWT_ACCESS_TOKEN_SECRET);
return { userId: decoded.sub };
}
function verifyRefreshToken(token) {
const decoded = jwt.verify(token, JWT_REFRESH_TOKEN_SECRET);
return { userId: decoded.sub };
}
export { generateTokens, verifyAccessToken, verifyRefreshToken };
π lib/prisma
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export default prisma;
Top comments (0)