Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const bcrypt = require('bcryptjs');
- const express = require('express');
- const jwt = require('jsonwebtoken');
- const User = require('../models/user.model');
- const auth = require('../middlewares/auth.middleware.js') // the auth middleware
- const router = express.Router();
- router.post('/login', login, auth.signToken);
- router.post('/register', register);
- function register(req, res, next) {
- const salt = bcrypt.genSaltSync(10);
- const hash = bcrypt.hashSync(req.body.password, salt);
- const user = new User({
- username: req.body.username,
- password: hash,
- });
- user.save((err) => {
- if (error) return next(err);
- res.json({
- message: 'Registration complete',
- });
- });
- }
- function login(req, res, next) {
- User.findOne({
- username: req.body.username,
- }, auth).select('+password');
- function auth(err, user) {
- if (err) return next(err);
- if (!user) {
- return res.json({
- login: false,
- message: 'Authentication failed. User not found.',
- });
- } else if (user) {
- bcrypt
- .compare(req.body.password, user.password)
- .then(compare);
- }
- function compare(passwordsMatch) {
- delete user.password;
- if (passwordsMatch) loginSuccess();
- else loginError();
- }
- function loginSuccess() {
- req.user = user;
- return next();
- }
- function loginError() {
- return res.json({
- login: false,
- message: 'Authentication failed. Wrong password.',
- });
- }
- }
- }
- module.exports = router;
Add Comment
Please, Sign In to add comment