//auth.js const express = require('express'); const bcrypt = require('bcryptjs'); const jwt = require('jsonwebtoken'); const User = require('../models/User'); const router = express.Router(); // Register router.post('/register', async (req, res) => { const { name, email, password } = req.body; if (!name || !email || !password) { return res.status(400).json({ message: 'All fields are required' }); } try { const existingUser = await User.findOne({ email }); if (existingUser) { return res.status(400).json({ message: 'User already exists' }); } const hashedPassword = await bcrypt.hash(password, 10); const newUser = new User({ name, email, password: hashedPassword, }); await newUser.save(); res.status(201).json({ message: 'User registered successfully' }); } catch (err) { console.error('Registration failed:', err); res.status(500).json({ message: 'Server error during registration' }); } }); // Login router.post('/login', async (req, res) => { const { email, password } = req.body; try { const user = await User.findOne({ email }); if (!user) return res.status(400).json({ message: 'Invalid credentials' }); const isMatch = await bcrypt.compare(password, user.password); if (!isMatch) return res.status(400).json({ message: 'Invalid credentials' }); const token = jwt.sign({ _id: user._id }, process.env.JWT_SECRET, { expiresIn: '1h' }); res.json({ token }); } catch (err) { console.error('Login failed:', err); res.status(500).json({ message: 'Server error during login' }); } }); module.exports = router; //tasks.js const express = require('express'); const TaskModel = require('../models/Task'); const authMiddleware = require('../middleware/authMiddleware'); // Authentication middleware const router = express.Router(); // Apply authentication middleware to all routes in this file router.use(authMiddleware); // Create a new task router.post('/create', async (req, res) => { const newTask = new TaskModel({ ...req.body, assignedTo: req.user._id, // Assign the task to the authenticated user }); try { await newTask.save(); res.status(201).json(newTask); // Send the created task as response } catch (err) { res.status(500).json({ error: 'Error creating task' }); } }); // Get all tasks for the logged-in user router.get('/all', async (req, res) => { try { const userTasks = await TaskModel.find({ assignedTo: req.user._id }); res.status(200).json(userTasks); } catch (err) { res.status(500).json({ error: 'Error fetching tasks' }); } }); // Get a specific task by ID router.get('/single/:taskId', async (req, res) => { try { const task = await TaskModel.findOne({ _id: req.params.taskId, assignedTo: req.user._id }); if (!task) return res.status(404).json({ error: 'Task not found' }); res.status(200).json(task); } catch (err) { res.status(500).json({ error: 'Error fetching task' }); } }); // Update a specific task router.put('/update/:taskId', async (req, res) => { try { const updatedTask = await TaskModel.findOneAndUpdate( { _id: req.params.taskId, assignedTo: req.user._id }, req.body, { new: true } ); if (!updatedTask) return res.status(404).json({ error: 'Task not found' }); res.status(200).json(updatedTask); } catch (err) { res.status(500).json({ error: 'Error updating task' }); } }); // Delete a task router.delete('/delete/:taskId', async (req, res) => { try { const deletedTask = await TaskModel.findOneAndDelete({ _id: req.params.taskId, assignedTo: req.user._id }); if (!deletedTask) return res.status(404).json({ error: 'Task not found' }); res.status(200).json({ message: 'Task Deleted' }); } catch (err) { res.status(500).json({ error: 'Error deleting task' }); } }); module.exports = router;
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter