Locaft-backend/auth/routes/users.js

120 lines
3.3 KiB
JavaScript

const express = require('express');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
const router = express.Router();
const { check,validationResult } = require('express-validator');
const UserSchema = require('../schemas/User');
const config = require('config');
router.post(
'/register',
[
check('email','E-mail is required').isEmail(),
check('password','Password is required').notEmpty()
],
async (req,res) =>{
try{
let { username,email,phonenumber,password } = req.body;
let user = await UserSchema.findOne({ email });
const errors = validationResult(req);
if(!errors.isEmpty()){
return res.status(401).json({ errors:errors.array()});
}
if(user){
return res.status(401).json({ msg: "User already exists"});
}
const salt = await bcrypt.genSalt(10);
password = await bcrypt.hash(password,salt);
user = new UserSchema({
username,
email,
phonenumber,
password
});
await user.save();
const payload = {
user: {
id: user.id,
}
}
jwt.sign(
payload,
config.get('jwtSecret'),
(err,token) =>{
if(err) throw err;
res.json({ token });
}
)
//res.send("cred received");
} catch(error) {
console.log(error.message);
return res.status(500).json({ msg: "Server Error..."});
}
}
)
router.post(
'/login',
[
check('email',"Type valid e-mail").isEmail(),
check('password','Passoword is required').notEmpty()
],
async (req,res) => {
try{
const { email, password } = req.body;
let user = await UserSchema.findOne({ email });
const errors = validationResult(req);
if(!errors.isEmpty()){
return res.status(401).json({
errors: errors.array()
});
}
if(!user) {
return res.status(401).json({ msg: "This user doesn't exists"});
}
let isPassowardMatch = await bcrypt.compare(password,user.password);
if(isPassowardMatch){
const payload = {
user: {
id: user.id,
}
}
jwt.sign(
payload,
config.get('jwtSecret'),
(err,token) =>{
if(err) throw err;
res.json({ token });
}
)
}else return res.status(401).json({
msg:"incorrect Passoword"
});
} catch (error) {
console.log(error.message);
return res.status(500).json({
msg:"serve error ...."
});
}
}
)
module.exports = router;