import express from 'express'; import bcrypt from 'bcryptjs'; import User from '../models/User.js'; const router = express.Router(); // Register route router.post('/register', async (req, res) => { try { const { email, password, name } = req.body; // Check if user exists const existingUser = await User.findOne({ email }); if (existingUser) { return res.status(400).json({ message: 'User already exists' }); } // Create new user const user = new User({ email, password, name }); await user.save(); res.status(201).json({ message: 'Registration successful' }); } catch (error) { console.error('Registration error:', error); res.status(500).json({ message: 'Server error' }); } }); // Login route router.post('/login', async (req, res) => { try { const { email, password } = req.body; // Find user const user = await User.findOne({ email }); if (!user) { return res.status(401).json({ message: 'Invalid email or password' }); } // Check password const isMatch = await bcrypt.compare(password, user.password); if (!isMatch) { return res.status(401).json({ message: 'Invalid email or password' }); } // Create session req.session.userId = user._id; res.json({ message: 'Login successful', user: { id: user._id, name: user.name, email: user.email, role: user.role } }); } catch (error) { console.error('Login error:', error); res.status(500).json({ message: 'Server error' }); } }); // Get current user router.get('/current_user', async (req, res) => { try { if (!req.session.userId) { return res.status(401).json({ message: 'Not authenticated' }); } const user = await User.findById(req.session.userId); if (!user) { return res.status(401).json({ message: 'User not found' }); } res.json({ id: user._id, name: user.name, email: user.email, role: user.role }); } catch (error) { console.error('Error getting current user:', error); res.status(500).json({ message: 'Server error' }); } }); // Logout route router.post('/logout', (req, res) => { req.session.destroy((err) => { if (err) { console.error('Logout error:', err); return res.status(500).json({ message: 'Error logging out' }); } res.json({ message: 'Logged out successfully' }); }); }); export default router;