routes folder
Mon Apr 14 2025 17:15:37 GMT+0000 (Coordinated Universal Time)
Saved by @salam123
//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;



Comments