Preview:
var express = require('express');
var router = express.Router();
var userModel = require('../model/user');
const auth = require('../middleware/auth');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
/* GET users listing. */

const CreateUser =  async (req,res,next) => {

    try {

       const createUser = new userModel({
        username: req.body.username,
        password: req.body.password
       })

       const saveData = await createUser.save();

       res.status(200).json({
        status: 'success',
        saveData
       })

      
    } catch (error) {

      res.status(500).json({
        status: 'error',
        error
      })
      
    }

}

const CheckUser = async (req,res,next) => {

  try {

    const {username , password } = req.body

    const findUser = await userModel.findOne({ username : username})

    if(findUser){

      bcrypt.compare(password, findUser.password, function(err, result) {
        // result == true
        if (result == true) {

          console.log(findUser);

          const token = jwt.sign({ _id: findUser._id }, "JWT_SECRET", { expiresIn: '1h' });
      
          res.cookie('token', token, { httpOnly: true });
          req.session.user = findUser;
      
          res.status(200).json({
            status: 'Login success',
            token
           })
          
        }else {

          res.status(500).json({
            status: 'Password Incorrect',
          })

        }
      });

    }else{

      res.status(500).json({
        status: 'User not Found',
      })

    }
    
  } catch (error) {
    
    res.status(500).json({
      status: 'error',
      error
    })

  }

}

const GetUser = async (req,res,next) => {

try {

  const page = parseInt(req.query.page);
  const limit = parseInt(req.query.limit) || 10;
  const skip = (page - 1) * limit;

  const findUser = await userModel.find().skip(skip).limit(limit);

  const userToken = req.cookies.token;
  const user = req.session.user;
  console.log("🚀 ~ GetUser ~ user:", user)

  console.log(user);

  res.status(200).json({
    status: 'Login success',
    findUser,
    userToken,
    user
   })
  
} catch (error) {
  
  res.status(500).json({
    status: 'error',
    error
  })

}

}

const logoutUser = async (req,res,next) => {

  try {
  
    res.clearCookie('token');
  
    res.send({ message: 'Logged out successfully' });
    
  } catch (error) {
    
    res.status(500).json({
      status: 'error',
      error
    })
  
  }
  
  }

router.post('/signin', CreateUser);
router.post('/logIn', CheckUser);
router.get('/getUser',auth, GetUser);
router.get('/logout',auth, logoutUser);

module.exports = router;
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