add feature for users to create and store recipes

This commit is contained in:
2025-08-10 13:52:45 +01:00
parent a53c50b8b4
commit 1d2fa1bf02
7 changed files with 779 additions and 9 deletions

View File

@@ -1,7 +1,26 @@
const express = require('express');
const router = express.Router();
const jwt = require('jsonwebtoken');
const Recipe = require('../models/Recipe');
// Middleware to authenticate JWT token
function authenticateToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({ error: 'Access token required' });
}
jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
if (err) {
return res.status(403).json({ error: 'Invalid or expired token' });
}
req.userId = decoded.userId;
next();
});
}
// Get all recipes
router.get('/', async (req, res) => {
try {
@@ -37,10 +56,13 @@ router.get('/:id', async (req, res) => {
}
});
// Create new recipe
router.post('/', async (req, res) => {
// Create new recipe (protected route)
router.post('/', authenticateToken, async (req, res) => {
try {
const recipe = new Recipe(req.body);
const recipe = new Recipe({
...req.body,
createdBy: req.userId // Add user ID to track who created the recipe
});
await recipe.save();
res.status(201).json(recipe);
} catch (error) {