text: const express = require('express');
  const router = express.Router();
  const { check, validationResult } = require('express-validator');
  const jwt = require('jsonwebtoken');
  const config = require('config');
  const bcrypt = require('bcryptjs');
  
  const auth = require('../../middleware/auth');
  const User = require('../../models/User');
  
  // @route   GET api/auth
  // @desc    This will return us our authenticated user
  // @acess   Public
  router.get('/', auth, async (req, res) => {
      try {
          const user = await User.findById(req.user.id).select('-password');
          res.json(user);
      } catch (err) {
          console.error(err.message);
          res.status(500).send('Server Error');
      }
  });
  
  // @route   POST api/auth
  // @desc    Authenticate/Login a user and respond with a token
  // @acess   Public
  router.post('/', [
      check('email', 'Please enter a valid email').isEmail(),
      check('password', 'Password is required').not().isEmpty()
  ], async (req, res) => {
      const errors = validationResult(req);
      if (!errors.isEmpty()) return res.status(400).json({ errors: errors.array() });
  
      const { email, password } = req.body;
      try {
          let user = await User.findOne({ email });
          if (!user) return res.status(400).json({ errors: [{ msg: 'Invalid Credentials' }] });
  
          const isMatch = await bcrypt.compare(password, user.password);
          if (!isMatch) return res.status(400).json({ errors: [{ msg: 'Invalid Credentials' }] });
  
          const payload = { user: { id: user.id } };
          jwt.sign(payload, config.get('jwtSecret'), { expiresIn: 360000 }, (err, token) => {
              if (err) throw err;
  
              res.json({ token });
          });
      } catch (error) {
          console.log(error.message);
          res.status(500).send('Server error');
      }
  });
  
  module.exports = router;