88 lines
2.1 KiB
JavaScript
88 lines
2.1 KiB
JavaScript
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
|
|
});
|
|
}
|
|
}; |