├── .gitignore ├── models └── user.model.js ├── server.js ├── package.json └── routes └── user.route.js /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules -------------------------------------------------------------------------------- /models/user.model.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const user = mongoose.Schema({ 4 | _id: mongoose.Schema.Types.ObjectId, 5 | email: {type: String, required: true}, 6 | password: {type: String, required: true} 7 | }); 8 | 9 | module.exports = mongoose.model('User', user); -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | const bodyParser = require('body-parser'); 4 | const user = require('./routes/user.route'); 5 | const mongoose = require('mongoose'); 6 | 7 | mongoose.connect('mongodb://localhost/jwtauth'); 8 | 9 | const PORT = 3000; 10 | 11 | app.use(bodyParser.urlencoded({ extended: false })); 12 | app.use(bodyParser.json()); 13 | 14 | app.get('/checking', function(req, res){ 15 | res.json({ 16 | "Tutorial": "Welcome to the Node express JWT Tutorial" 17 | }); 18 | }); 19 | 20 | app.use('/user', user); 21 | 22 | app.listen(PORT, function(){ 23 | console.log('Server is running on Port',PORT); 24 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejwt", 3 | "version": "1.0.0", 4 | "description": "Node js Express JWT Authentication Tutorial", 5 | "main": "server.js", 6 | "scripts": { 7 | "start": "nodemon server" 8 | }, 9 | "keywords": [ 10 | "Node.js", 11 | "Express", 12 | "JWT", 13 | "Token", 14 | "based", 15 | "Authentication" 16 | ], 17 | "author": "Krunal Lathiya", 18 | "license": "ISC", 19 | "dependencies": { 20 | "bcrypt": "^1.0.3", 21 | "body-parser": "^1.18.2", 22 | "express": "^4.16.2", 23 | "jsonwebtoken": "^8.1.1", 24 | "mongoose": "^5.0.3" 25 | }, 26 | "devDependencies": { 27 | "nodemon": "^1.14.12" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /routes/user.route.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const mongoose = require('mongoose'); 4 | const bcrypt = require('bcrypt'); 5 | const jwt = require('jsonwebtoken'); 6 | const User = require('../models/user.model'); 7 | 8 | router.post('/signup', function(req, res) { 9 | console.log(req.body); 10 | bcrypt.hash(req.body.password, 10, function(err, hash){ 11 | if(err) { 12 | return res.status(500).json({ 13 | error: err 14 | }); 15 | } 16 | else { 17 | const user = new User({ 18 | _id: new mongoose.Types.ObjectId(), 19 | email: req.body.email, 20 | password: hash 21 | }); 22 | user.save().then(function(result) { 23 | console.log(result); 24 | res.status(200).json({ 25 | success: 'New user has been created' 26 | }); 27 | }).catch(error => { 28 | res.status(500).json({ 29 | error: err 30 | }); 31 | }); 32 | } 33 | }); 34 | }); 35 | 36 | router.post('/signin', function(req, res){ 37 | User.findOne({email: req.body.email}) 38 | .exec() 39 | .then(function(user) { 40 | bcrypt.compare(req.body.password, user.password, function(err, result){ 41 | if(err) { 42 | return res.status(401).json({ 43 | failed: 'Unauthorized Access' 44 | }); 45 | } 46 | if(result) { 47 | const JWTToken = jwt.sign({ 48 | email: user.email, 49 | _id: user._id 50 | }, 51 | 'secret', 52 | { 53 | expiresIn: '2h' 54 | }); 55 | return res.status(200).json({ 56 | success: 'Welcome to the JWT Auth', 57 | token: JWTToken 58 | }); 59 | } 60 | return res.status(401).json({ 61 | failed: 'Unauthorized Access' 62 | }); 63 | }); 64 | }) 65 | .catch(error => { 66 | res.status(500).json({ 67 | error: error 68 | }); 69 | });; 70 | }); 71 | 72 | module.exports = router; --------------------------------------------------------------------------------