From 39de5aeb11a5f7317a580a71965318390b31431f Mon Sep 17 00:00:00 2001 From: builtbysuraj Date: Fri, 1 Mar 2024 20:14:17 +0530 Subject: [PATCH] chore: Add connectDB in all controller, Add vercel.json and api folder --- server/.env.sample | 1 + server/api/index.ts | 3 +++ server/src/app.ts | 2 +- server/src/conf/conf.ts | 1 + .../src/controller/payment/checkout.controller.ts | 2 ++ server/src/controller/payment/payment.controller.ts | 3 +++ .../controller/payment/verifyPayment.controller.ts | 3 +++ server/src/controller/user/login.controller.ts | 13 +++++++++++-- server/src/controller/user/logout.controller.ts | 3 ++- server/src/controller/user/register.controller.ts | 12 ++++++++++-- server/src/db/db.ts | 2 +- server/src/middleware/verifyToken.middleware.ts | 3 ++- server/tsconfig.json | 3 +-- server/vercel.json | 3 +++ 14 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 server/api/index.ts create mode 100644 server/vercel.json diff --git a/server/.env.sample b/server/.env.sample index 1d4d0c8..9d72c6e 100644 --- a/server/.env.sample +++ b/server/.env.sample @@ -1,6 +1,7 @@ MONGODB_URL= MONGODB_URL_LOCAL=mongodb://127.0.0.1:27017 CLIENT_URL= +JWT_SECRET= RAZORPAY_API_KEY= RAZORPAY_APT_SECRET= diff --git a/server/api/index.ts b/server/api/index.ts new file mode 100644 index 0000000..964a98d --- /dev/null +++ b/server/api/index.ts @@ -0,0 +1,3 @@ +import app from '../src/app' + +export default app diff --git a/server/src/app.ts b/server/src/app.ts index f720243..ef17c8a 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -7,7 +7,7 @@ const app = express() app.use( cors({ - origin: [ENV.CLIENT_URL, ENV.CORS_ORIGIN], + origin: [ENV.CLIENT_URL], credentials: true, }) ) diff --git a/server/src/conf/conf.ts b/server/src/conf/conf.ts index 2e5df8a..ffa26da 100644 --- a/server/src/conf/conf.ts +++ b/server/src/conf/conf.ts @@ -7,6 +7,7 @@ export const ENV = { MONGODB_URL: String(process.env.MONGODB_URL), MONGODB_URL_LOCAL: String(process.env.MONGODB_URL_LOCAL), CLIENT_URL: String(process.env.CLIENT_URL), + JWT_SECRET: String(process.env.JWT_SECRET), RAZORPAY_API_KEY: String(process.env.RAZORPAY_API_KEY), RAZORPAY_APT_SECRET: String(process.env.RAZORPAY_APT_SECRET), diff --git a/server/src/controller/payment/checkout.controller.ts b/server/src/controller/payment/checkout.controller.ts index d6aeda9..f4b26eb 100644 --- a/server/src/controller/payment/checkout.controller.ts +++ b/server/src/controller/payment/checkout.controller.ts @@ -1,6 +1,8 @@ import { razorpayInstance } from '../..' +import connectDB from '../../db/db' export const checkout = async (req, res) => { + await connectDB() const options = { amount: Number(req.body.amount * 100), currency: 'INR', diff --git a/server/src/controller/payment/payment.controller.ts b/server/src/controller/payment/payment.controller.ts index 46e4211..3012c87 100644 --- a/server/src/controller/payment/payment.controller.ts +++ b/server/src/controller/payment/payment.controller.ts @@ -1,9 +1,12 @@ import crypto from 'crypto' import { ENV } from '../../conf/conf' import { CLIENT_BASE_URL } from '../../constants' +import connectDB from '../../db/db' import { Payment } from '../../model/payment.model' export const paymentVerification = async (req, res) => { + await connectDB() + const { razorpay_order_id, razorpay_payment_id, razorpay_signature } = req.body const userId = req.user.id diff --git a/server/src/controller/payment/verifyPayment.controller.ts b/server/src/controller/payment/verifyPayment.controller.ts index e9b26de..3400c54 100644 --- a/server/src/controller/payment/verifyPayment.controller.ts +++ b/server/src/controller/payment/verifyPayment.controller.ts @@ -1,6 +1,9 @@ +import connectDB from '../../db/db' import { Payment } from '../../model/payment.model' export const verifyPayment = async (req, res) => { + await connectDB() + const paymentId = req.query.paymentId console.log(paymentId) try { diff --git a/server/src/controller/user/login.controller.ts b/server/src/controller/user/login.controller.ts index 0ba6660..2a788f9 100644 --- a/server/src/controller/user/login.controller.ts +++ b/server/src/controller/user/login.controller.ts @@ -1,9 +1,13 @@ import bcryptjs from 'bcryptjs' import jwt from 'jsonwebtoken' +import { ENV } from '../../conf/conf' +import connectDB from '../../db/db' import { User } from '../../model/user.model' export const loginUser = async (req, res) => { try { + await connectDB() + const { username, password } = req.body const user = await User.findOne({ username }) @@ -23,11 +27,16 @@ export const loginUser = async (req, res) => { } // Create token with JWT - const token = await jwt.sign(tokenData, 'secret', { + const token = await jwt.sign(tokenData, ENV.JWT_SECRET, { expiresIn: '1d', }) - res.cookie('token', token) + res.cookie('token', token, { + secure: true, + sameSite: 'none', + maxAge: 24 * 60 * 60 * 1000, + }) + return res.json({ message: 'Login successful', success: true, diff --git a/server/src/controller/user/logout.controller.ts b/server/src/controller/user/logout.controller.ts index 298c55e..a68cc40 100644 --- a/server/src/controller/user/logout.controller.ts +++ b/server/src/controller/user/logout.controller.ts @@ -1,6 +1,7 @@ export const logout = async (req, res) => { try { - res.cookie('token', '', { maxAge: 0 }) + res.cookie('token', '', { secure: true, maxAge: 0, sameSite: 'none' }) + return res.json({ message: 'Logout successfully', success: true, diff --git a/server/src/controller/user/register.controller.ts b/server/src/controller/user/register.controller.ts index a34b11e..1649a2b 100644 --- a/server/src/controller/user/register.controller.ts +++ b/server/src/controller/user/register.controller.ts @@ -1,9 +1,12 @@ import bcryptjs from 'bcryptjs' import jwt from 'jsonwebtoken' +import { ENV } from '../../conf/conf' +import connectDB from '../../db/db' import { User } from '../../model/user.model' export const registerUser = async (req, res) => { try { + await connectDB() const { username, password } = req.body // console.log(name, pass) @@ -27,11 +30,16 @@ export const registerUser = async (req, res) => { } // Create token with JWT - const token = await jwt.sign(tokenData, 'secret', { + const token = await jwt.sign(tokenData, ENV.JWT_SECRET, { expiresIn: '1d', }) - res.cookie('token', token) + res.cookie('token', token, { + secure: true, + sameSite: 'none', + maxAge: 24 * 60 * 60 * 1000, + }) + return res.json({ message: 'User registered successfully', token }) } catch (error) { console.log(error) diff --git a/server/src/db/db.ts b/server/src/db/db.ts index 7f14f91..68f7c6a 100644 --- a/server/src/db/db.ts +++ b/server/src/db/db.ts @@ -4,7 +4,7 @@ import { DB_NAME } from '../constants' const connectDB = async () => { try { - await mongoose.connect(`${ENV.MONGODB_URL_LOCAL}/${DB_NAME}`) + await mongoose.connect(`${ENV.MONGODB_URL}/${DB_NAME}`) console.log('MongoDB connected') } catch (error) { console.log('MongoDB connection FAILED ', error) diff --git a/server/src/middleware/verifyToken.middleware.ts b/server/src/middleware/verifyToken.middleware.ts index ccda5cb..823e721 100644 --- a/server/src/middleware/verifyToken.middleware.ts +++ b/server/src/middleware/verifyToken.middleware.ts @@ -1,4 +1,5 @@ import jwt from 'jsonwebtoken' +import { ENV } from '../conf/conf' export const verifyToken = (req, res, next) => { const token = req.cookies.token @@ -8,7 +9,7 @@ export const verifyToken = (req, res, next) => { } try { - const verified = jwt.verify(token, 'secret') + const verified = jwt.verify(token, ENV.JWT_SECRET) req.user = verified next() } catch (err) { diff --git a/server/tsconfig.json b/server/tsconfig.json index 0ef1a39..789ade3 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -3,7 +3,6 @@ "target": "ESNext", "module": "CommonJS", "moduleResolution": "Node", - "rootDir": "src", "outDir": "build", "lib": ["ESNext"], "strict": false, @@ -16,6 +15,6 @@ "allowSyntheticDefaultImports": true, "isolatedModules": true }, - "include": ["src/**/*"], + "include": ["src/**/*", "api/**/*"], "exclude": ["node_modules"] } diff --git a/server/vercel.json b/server/vercel.json new file mode 100644 index 0000000..18da4e3 --- /dev/null +++ b/server/vercel.json @@ -0,0 +1,3 @@ +{ + "rewrites": [{ "source": "/(.*)", "destination": "/api" }] +}