Skip to content

Commit 51c4ef5

Browse files
authored
Merge pull request #4 from OmkarPh/Omkar
Implemented validation for Registration credentials.
2 parents 51ed760 + 16def13 commit 51c4ef5

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

routes/api/users.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,33 @@ const jwt = require("jsonwebtoken");
66
//Item Model
77
const User = require("../../models/user");
88

9+
// Regex expressions:
10+
const emailRegex = new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
11+
12+
// Constraints: Minimum Length: 8, Contains at least 1 special char, 1 number, 1 Capital Letter & 1 Small Letter
13+
const passwordRegex = new RegExp(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/);
14+
15+
916
/*----------------- Register Route ---------------*/
1017
router.post("/", async (req, res) => {
1118
const { name, email, password } = req.body;
1219

13-
//simple validation
14-
if (!name || !email || !password) {
20+
// Simple pre-validation
21+
if (!name || !email || !password)
1522
return res.status(400).send({ msg: "Please enter all fields" });
16-
}
23+
24+
// Brief Validation
25+
if(name.length < 3)
26+
return res.status(406).send({msg: "Name must have at least 3 characters"});
1727

28+
if (!emailRegex.test(email))
29+
return res.status(406).send({msg: "Please provide valid email"});
30+
31+
if(!passwordRegex.test(password))
32+
return res.status(406).send({
33+
msg: "Please provide password meeting following criteria: Minimum Length: 8, Contains at least 1 special char, 1 number, 1 Capital Letter & 1 Small Letter"
34+
});
35+
1836
//Check for existing user
1937
const existingUser = await User.findOne({ email });
2038

0 commit comments

Comments
 (0)