Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const router = express.Router();
- const passport = require('passport');
- const jwt = require('jsonwebtoken');
- const config = require('../config/database');
- const User = require('../models/user');
- // Register view
- router.get('/register', function (req, res) {
- res.render('register');
- });
- // Register
- router.post('/register', (req, res, next) => {
- let newUser = new User({
- name: req.body.name,
- email: req.body.email,
- username: req.body.username,
- password: req.body.password
- });
- User.addUser(newUser, (err, user) => {
- if (err) {
- res.json({
- success: false,
- msg: 'Failed to register user'
- });
- } else {
- res.json({
- success: true,
- msg: 'User registered'
- });
- }
- });
- });
- // Login view
- router.get('/login', function (req, res) {
- res.render('login');
- });
- // Login
- router.post('/login', (req, res, next) => {
- const username = req.body.username;
- const password = req.body.password;
- User.getUserByUsername(username, (err, user) => {
- if (err) throw err;
- if (!user) {
- return res.json({
- success: false,
- msg: 'User not found'
- });
- }
- User.comparePassword(password, user.password, (err, isMatch) => {
- if (err) throw err;
- if (isMatch) {
- const token = jwt.sign({
- data: user
- }, config.secret, {
- expiresIn: 604800 // 1 week
- });
- res.json({
- success: true,
- token: `Bearer ${token}`,
- user: {
- id: user._id,
- name: user.name,
- username: user.username,
- email: user.email
- }
- });
- res.header('Authorization', "Bearer " + token);
- } else {
- return res.json({
- success: false,
- msg: 'Wrong password'
- });
- }
- });
- });
- });
- // Profile
- router.get('/profile', passport.authenticate('jwt', {
- session: false
- }), (req, res, next) => {
- res.json({
- user: req.user
- });
- });
- module.exports = router;
- const JwtStrategy = require('passport-jwt').Strategy;
- const ExtractJwt = require('passport-jwt').ExtractJwt;
- const User = require('../models/user');
- const config = require('../config/database');
- module.exports = function(passport){
- let opts = {};
- opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
- opts.secretOrKey = config.secret;
- passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
- User.getUserById(jwt_payload.data._id, (err, user) => {
- if(err){
- return done(err, false);
- }
- if(user){
- return done(null, user);
- } else {
- return done(null, false);
- }
- });
- }));
- }
Add Comment
Please, Sign In to add comment