Skip to content

Instantly share code, notes, and snippets.

@harrisonmalone
Created January 17, 2020 00:02
Show Gist options
  • Save harrisonmalone/ec86cd8a51d7a708c8248c98f8a3b5ae to your computer and use it in GitHub Desktop.
Save harrisonmalone/ec86cd8a51d7a708c8248c98f8a3b5ae to your computer and use it in GitHub Desktop.
const express = require('express')
const router = express.Router()
router.use('/users', require('./users'))
module.exports = router
const bcrypt = require('bcrypt')
exports.hashPassword = async (password) => {
return await bcrypt.hash(password, 10)
}
exports.comparePassword = async (password, hash) => {
return await bcrypt.compare(password, hash)
}
const jwt = require('jsonwebtoken')
exports.createToken = ({ username }) => {
return jwt.sign({ username }, 'shhhhh')
}
const User = require('../models/User')
const { hashPassword, comparePassword } = require('../utils/passwords')
const { createToken } = require('../utils/tokens')
exports.register = async (req, res) => {
try {
const hash = await hashPassword(req.body.password)
let user = new User({
username: req.body.username,
password: hash,
})
user = await user.save()
const token = createToken(user)
res.send(token)
} catch(err) {
res.status(500).send(err.message)
}
}
exports.login = async (req, res) => {
try {
const { username, password } = req.body
const user = await User.findOne({
username: username
})
if (!user) {
res.status(403).end()
} else {
const correctPassword = await comparePassword(password, user.password)
if (!correctPassword) {
res.status(403).end()
} else {
const token = createToken(user)
res.send(token)
}
}
} catch(err) {
res.status(500).send(err.message)
}
}
const express = require('express')
const router = express.Router()
const { register, login } = require('../controllers/users-controller')
router.post('/register', express.json(), register)
router.post('/login', express.json(), login)
module.exports = router
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment