This repository was archived by the owner on Jun 3, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 916
Expand file tree
/
Copy pathContrUser.js
More file actions
146 lines (126 loc) · 4.51 KB
/
ContrUser.js
File metadata and controls
146 lines (126 loc) · 4.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import User from "../models/ModelUser.js";
import bcrypt from "bcrypt"
import jwt from "jsonwebtoken"
const loginUser = async (req, res) => {
const { email, password } = req.body;
console.log(req.body)
try {
const user = await User.findOne({ email });
if (user) {
const passwordIsValid = await bcrypt.compare(password, user.password);
if (passwordIsValid) {
const newJWT = jwt.sign({ _id: user._id }, "mysecret");
console.log(newJWT);
res.cookie("usertoken", newJWT, { httpOnly: true }).json({ success: true, user: user });
} else {
res.status(500).json({ success: false });
}
} else {
res.status(500).json({ success: false });
}
} catch (error) {
console.error('Error en la autenticación:', error);
res.status(500).json({ success: false, error: 'Error en la autenticación' });
}
};
const registerUser = async (req, res) => {
try {
// Extraer datos del cuerpo de la solicitud
const { firstName, lastName, email, password, confirmPassword } = req.body;
// Verificar si la contraseña y la confirmación coinciden
if (password !== confirmPassword) {
return res.status(400).json({ success: false, message: 'Password and confirmPassword do not match' });
}
// Hash de la contraseña
const hashedPassword = await bcrypt.hash(password, 10);
// Crear una instancia del modelo User
const user = new User({ firstName, lastName, email, password: hashedPassword, confirmPassword: hashedPassword });
// Guardar el usuario en la base de datos
await user.save();
// Devolver una respuesta exitosa
res.status(201).json({ success: true, message: 'User registered successfully' });
} catch (error) {
// Manejar errores durante el registro
console.error(error);
// Verificar si el error es de validación (por ejemplo, contraseña no coincidente)
if (error.errors) {
const validationErrors = Object.values(error.errors).map(err => err.message);
return res.status(400).json({ success: false, errors: validationErrors });
}
// Otros errores, devolver un mensaje genérico de error
res.status(500).json({ success: false, message: 'Error registering user' });
}
};
const logoutUser = (req, res) => {
try {
// Eliminar la cookie del token de usuario
res.clearCookie('usertoken', { httpOnly: true });
// Respondemos con un código 200 (OK) para indicar que el cierre de sesión fue exitoso
res.status(200).json({ success: true, message: 'Logout successful' });
} catch (error) {
console.error('Error during logout:', error);
res.status(500).json({ success: false, error: 'Error during logout' });
}
};
const createUser = async (req, res) => {
try {
console.log(req.body);
let personData = req.body;
let newUser = await User.create(personData)
res.status(200).json(newUser);
} catch (e) {
console.log("Error", + e)
res.status(400).json({ message: e.message, });
}
};
const getUser = async (req, res) => {
try {
let userList = await User.find();
res.status(200).json(userList);
} catch (e) {
console.log("Error", + e)
res.status(400).json({ message: e.message, });
}
};
const getOneUser = async (req, res) => {
try {
let id = req.params.id;
let userList = await User.find(id);
res.status(200).json(userList);
} catch (e) {
console.log("Error", + e)
res.status(400).json({ message: e.message, });
}
};
const updateUser = async (req, res) => {
try {
let id = req.params.id;
let updateUser = await User.findByIdAndUpdate(id, req.body, { new: true })
res.status(200).json(updateUser);
} catch (e) {
console.log("Error", + e)
res.status(400).json({ message: e.message, });
}
};
const deleteUser = async (req, res) => {
try {
let user = await User.findById(id);
if (!user) {
res.status(400).json({ message: "User not found", });
}
await User.findByIdAndDelete(id)
} catch (e) {
console.log("Error", + e)
res.status(400).json({ message: e.message, });
}
};
export {
createUser,
getUser,
getOneUser,
updateUser,
deleteUser,
registerUser,
loginUser,
logoutUser
};