Skip to content

Instantly share code, notes, and snippets.

@rashedInt32
Created September 4, 2019 02:47
Show Gist options
  • Save rashedInt32/ce215d09ecbde9090e5587bb9464affb to your computer and use it in GitHub Desktop.
Save rashedInt32/ce215d09ecbde9090e5587bb9464affb to your computer and use it in GitHub Desktop.
import express from 'express';
import bcrypt from 'bcryptjs';
import { User, validateUser } from '../../models/userSchema';
const router = express.Router();
/**
* @routes GET /api/users/register
* @desc Register routes
* @api public
*/
router.post('/register', async (req, res) => {
const { name, email, password, isAdmin } = req.body;
// Validate input value to match schema
const { error } = validateUser(req.body);
if (error) return res.status(400).send({
error: true,
msg: error.details[0].message
});
// Check user already registered or not
let user = await User.findOne({ email });
if (user)
return res.send({
error: true,
msg: 'Email already exists'
});
user = new User({ name, email, password, isAdmin });
// Generate hash password
const salt = await bcrypt.genSalt(10);
const hashed = await bcrypt.hash(password, salt);
// Update user password with hashed
user.password = hashed;
await user.save();
const token = user.generateAuthToken();
res.header('x-auth-token', token).send(user);
});
export default router;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment