const { User } = require('../models'); const bcrypt = require('bcryptjs'); // @desc Register a new user // @route POST /api/auth/register // @access Public exports.register = async (req, res) => { try { const { name, email, password } = req.body; // Check if user already exists const userExists = await User.findOne({ where: { email } }); if (userExists) { return res.status(400).json({ success: false, message: 'El usuario ya existe' }); } // Create user const user = await User.create({ name, email, password, // Will be hashed by the model hooks profilePicUrl: '/uploads/default-avatar.jpg', notificationsEnabled: true }); // Return user without password const userResponse = user.toJSON(); delete userResponse.password; res.status(201).json({ success: true, user: userResponse }); } catch (error) { console.error('Error en register:', error); res.status(500).json({ success: false, message: 'Error al registrar usuario', error: error.message }); } }; // @desc Login user // @route POST /api/auth/login // @access Public exports.login = async (req, res) => { try { const { email, password } = req.body; // Check if user exists const user = await User.findOne({ where: { email } }); if (!user) { return res.status(401).json({ success: false, message: 'Credenciales inválidas' }); } // Check if password matches const isMatch = await user.matchPassword(password); if (!isMatch) { return res.status(401).json({ success: false, message: 'Credenciales inválidas' }); } // Return user without password const userResponse = user.toJSON(); delete userResponse.password; res.status(200).json({ success: true, user: userResponse }); } catch (error) { console.error('Error en login:', error); res.status(500).json({ success: false, message: 'Error al iniciar sesión', error: error.message }); } };