var jwt = require('jsonwebtoken'); const userModel = require('../model/user'); function Auth (req, res, next) { const getUserCookies = req.cookies.userData; if(!getUserCookies){ res.status(200).json({message: 'Login First'}) } jwt.verify(getUserCookies.token, 'shhhhh', async function(err, decoded) { req.user = await userModel.findById(decoded._id); if (!req.user) { return res.status(401).json({ error: 'Invalid token. User not found.' }); } next() // bar }); } module.exports = Auth; const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ email:{ type: 'string', required: true }, password:{ type: 'string', required: true } }); const userModel = mongoose.model('User', userSchema); module.exports = userModel; var express = require('express'); var router = express.Router(); const userModel = require('../model/user'); var jwt = require('jsonwebtoken'); const Auth = require('../middleware/Auth'); /* GET users listing. */ router.get('/', function(req, res, next) { res.send('respond with a resource'); }); const createUser = async (req,res,nexr) => { try { const userDatasave = new userModel({ email: req.body.email, password: req.body.password }) const saveUser = await userDatasave.save(); res.status(200).json({ status: 'success', saveUser: saveUser }) } catch (error) { console.log(error.message); res.status(500).json({ status: 'Server Error', }) } } const checkUser = async (req,res,nexr) => { try { const {email, password} = req.body; const findUser = await userModel.findOne({email}) if(findUser){ if(findUser.password === password){ var token = jwt.sign({ _id: findUser._id }, 'shhhhh', { expiresIn: '1h'}); res.cookie('userData',{...findUser,token},{httpOnly: true}); res.status(200).json({ status: 'login successful', token }) }else{ res.status(200).json({ status: 'Wrong Password', }) } }else{ res.status(200).json({ status: 'User not Found', }) } } catch (error) { console.log(error.message); res.status(500).json({ status: 'Server Error', }) } } const getAllUser = async (req,res,nexr) => { try { const findUser = await userModel.find({}) res.status(200).json({ status: 'success', findUser: findUser }) } catch (error) { console.log(error.message); res.status(500).json({ status: 'Server Error', }) } } const userLogout = async (req,res,nexr) => { try { res.clearCookie('userData'); res.status(200).json({ status: 'user logged out successfully', }) } catch (error) { console.log(error.message); res.status(500).json({ status: 'Server Error', }) } } router.post('/saveuser',createUser); router.post('/loginuser',checkUser); router.get('/getuser',Auth,getAllUser); router.get('/logout',Auth,userLogout); module.exports = router;
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter