add feature for users to create and store recipes
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user