This repository was archived by the owner on Sep 6, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 314
Expand file tree
/
Copy pathuser.controller.js
More file actions
69 lines (55 loc) · 1.82 KB
/
user.controller.js
File metadata and controls
69 lines (55 loc) · 1.82 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
const { User, validateRegister, validateLogin } = require("../models/User.model");
const bcrypt = require("bcryptjs");
const collectErrorMessage = (error) => ({ [error.details[0].context.key]: error.details[0].message });
export default {
signUp: async (req, res) => {
const { error } = validateRegister(req.body);
if (error)
return res.status(400).send({
type: error.name,
details: collectErrorMessage(error),
});
const { email, password, name } = req.body;
let user = await User.findOne({ email }); // Verify if user already exist.
if (user) {
return res.status(400).json({
message: "User already registered.",
});
}
user = new User({
name,
email,
password,
});
try {
const salt = await bcrypt.genSalt(10);
user.password = await bcrypt.hash(password, salt);
await user.save();
const token = user.generateAuthToken();
res.header("x-auth-token", token).status(201).send({
message: "User successfully registered",
user: user._id,
token
});
} catch (err) {
res.status(400).json(err);
}
},
login: async (req, res) => {
// const { error } = validateLogin(req.body);
// if (error) return res.status(400).send(error.details[0].message);
// console.log(req.body);
const { email, password } = req.body;
const user = await User.findOne({ email });
if (!user) return res.status(400).send("Invalid email or password");
const validPass = await bcrypt.compare(password, user.password);
if (!validPass) {
return res.status(400).send("Invalid email or password.");
}
const token = user.generateAuthToken();
res.header("x-auth-token", token).status(200).send({
message: "Successfully logged in!",
token,
});
},
};