HTMLify
auth.js
Views: 13 | Author: cody
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 | const express = require('express') const router = express.Router() const mongoose = require('mongoose') const User = mongoose.model('User') const bcrypt = require('bcryptjs') const jwt = require('jsonwebtoken') const requireLogin = require('../middleware/requireLogin') // router.get('/', (req, res) => { // res.send("hello authh") // }) router.get('/protected', requireLogin, (req, res) => { res.send('hello i am middleware !!') }) // SIGN UP ROUTER router.post('/signup', (req, res) => { const {name, email, password} =req.body if(!name || !email || !password) { return res.status(422).json({ error: 'please fill all the fields' }) } // IN CASE USER ALREADY REGISTERED User.findOne({email:email}) .then((savedUser) => { if(savedUser) { return res.status(422).json({ error: 'this email is already exist!' }) } bcrypt.hash(password, 12) .then(hashedpassword => { const user = new User({ name, email, password: hashedpassword }) user.save() .then(user => { res.json({ message: 'Sign up successfully!' }) }) .catch(err => { console.log(err); }) }) }) .catch(err => { console.log(err); }) }) // SIGN IN ROUTER router.post('/signin', (req, res) => { const {email, password} = req.body if(!email || !password) { res.status(422).json({ error: 'please add email or password' }) } User.findOne({ email:email }) .then(savedUser => { if(!savedUser) { res.status(422).json({ error: 'invalid email or password' }) } bcrypt.compare(password, savedUser.password) .then(doMatch => { if(doMatch) { // res.json({ message: 'successfully signed in!' }) // HERE 'lkuyevbklsdartegha' IS UDefined TOKEN const token = jwt.sign({ _id: savedUser._id}, 'lkuyevbklsdartegha') const {_id, name, email} = savedUser res.json({token, user: {_id, name, email}}) } else { return res.status(422).json({ error: 'invalid email or password' }) } }) .catch(err => { console.log(err); }) }) }) module.exports = router |