'Getting Request failed with status code 403 error while fetching data from MongoDB

When I try to fetch records from the database, it's giving me below mentioned error, I can't understand the error details. I wanted to fetch some data from database. My all keys are okay, there is no problem. In my http://localhost:5000/my gives me this error {"message": "Unauthorized Access"}

server side

const express = require("express");
const app = express();
const port = process.env.PORT || 5000;
app.use(express.json());
var jwt = require("jsonwebtoken");
var cors = require("cors");
app.use(cors());
app.get("/", (req, res) => {
  res.send("Hello World!");
});

const { MongoClient, ServerApiVersion, ObjectId } = require("mongodb");
const uri =
  "mongodb+srv://laptop:[email protected]/myFirstDatabase?retryWrites=true&w=majority";
const client = new MongoClient(uri, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  serverApi: ServerApiVersion.v1,
});
function verifyJWT(req, res, next) {
  const authHeader = req.headers.authorization;
  if (!authHeader) {
    return res.status(401).send({ message: "Unauthorized Access" });
  }
  const token = authHeader.split(" ")[1];
  jwt.verify(
    token,
    `54dab75ad712812022813833f08092641f7650a9ef862d82817f40b857448f186a64524bf05a425d218e0b12724fd53f91545b84e2bf0cc0cc387cbf85914aeb`,
    (err, decoded) => {
      if (err) {
      }
      return res.status(403).send({ message: "Forbidden Access" });
    }
  );
  console.log("inside verifyHWT", authHeader);
  next();
}
client.connect((err) => {
  async function run() {
    try {
      await client.connect();
      const serviceCollection = client.db("laptop").collection("service");
      const myCollection = client.db("laptop").collection("order");
      app.get("/service", async (req, res) => {
        const query = {};
        const cursor = serviceCollection.find(query);
        const services = await cursor.toArray();
        res.send(services);
      });
      app.get("/service/:id", async (req, res) => {
        const id = req.params.id;
        const query = { _id: ObjectId(id) };
        const service = await serviceCollection.findOne(query);
        res.send(service);
      });
      app.post("/service", async (req, res) => {
        const newService = req.body;
        const result = await serviceCollection.insertOne(newService);
        res.send(result);
      });
      app.put("/service/:id", async (req, res) => {
        const id = req.params.id;
        const updateUser = req.body;
        console.log(updateUser);
        const filter = { _id: ObjectId(id) };
        const options = { upset: true };
        const updateDoc = {
          $set: {
            quantity: updateUser.quantity,
          },
        };
        const result = await serviceCollection.updateOne(
          filter,
          updateDoc,
          options
        );
        res.send(result);
      });
      app.delete("/service/:id", async (req, res) => {
        const id = req.params.id;
        const query = { _id: ObjectId(id) };
        const result = await serviceCollection.deleteOne(query);
        res.send(result);
      });
      app.post("/my", async (req, res) => {
        const my = req.body;
        const result = await myCollection.insertOne(my);
        res.send(result);
      });
      app.get("/my", verifyJWT, async (req, res) => {
        const authHeader = req.headers.authorization;
        console.log(authHeader);
        const email = req.query.email;
        const query = { email };
        const cursor = myCollection.find(query);
        const services = await cursor.toArray();
        res.send(services);
      });

      //AUTH
      app.post("/login", (req, res) => {
        const user = req.body;
        const accessToken = jwt.sign(
          user,
          `54dab75ad712812022813833f08092641f7650a9ef862d82817f40b857448f186a64524bf05a425d218e0b12724fd53f91545b84e2bf0cc0cc387cbf85914aeb`,
          {
            expiresIn: "1d",
          }
        );
        res.send({ accessToken });
      });
    } finally {
    }
  }
  run().catch(console.dir);
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

client side code

import React, { useEffect, useState } from "react";
import axios from "axios";
import { useAuthState } from "react-firebase-hooks/auth";
import auth from "../firebaseInit";
import MyDetails from "../MyDetails/MyDetails";
const MyItem = () => {
  const [order, setOrder] = useState([]);
  console.log(order);
  const [user] = useAuthState(auth);
  useEffect(() => {
    const getOrders = async () => {
      const email = user.email;
      const url = `http://localhost:5000/my?email=${email}`;
      const { data } = await axios.get(url, {
        headers: {
          authorization: `Bearer ${localStorage.getItem("accessToken")}`,
        },
      });
      // setOrder(data);
      console.log(data);
    };
    getOrders();
  }, [user]);
  return (
    <div>
      {order.map((product) => (
        <MyDetails product={product} key={product._id}></MyDetails>
      ))}
    </div>
  );
};

export default MyItem;

error

xhr.js:220 
 GET http://localhost:5000/[email protected] 403 (Forbidden)
dispatchXhrRequest  @   xhr.js:220
xhrAdapter  @   xhr.js:16
dispatchRequest @   dispatchRequest.js:58
request @   Axios.js:109
Axios.<computed>    @   Axios.js:131
wrap    @   bind.js:9
getOrders   @   MyItem.js:32
(anonymous) @   MyItem.js:40
commitHookEffectListMount   @   react-dom.development.js:23049
commitPassiveMountOnFiber   @   react-dom.development.js:24816
commitPassiveMountEffects_complete  @   react-dom.development.js:24781
commitPassiveMountEffects_begin @   react-dom.development.js:24768
commitPassiveMountEffects   @   react-dom.development.js:24756
flushPassiveEffectsImpl @   react-dom.development.js:26990
flushPassiveEffects @   react-dom.development.js:26935
(anonymous) @   react-dom.development.js:26725
workLoop    @   scheduler.development.js:266
flushWork   @   scheduler.development.js:239
performWorkUntilDeadline    @   scheduler.development.js:533

2nd error

AxiosError {message: 'Request failed with status code 403', name: 'AxiosError', code: 'ERR_BAD_REQUEST', config: {…}, request: XMLHttpRequest, …}
code: "ERR_BAD_REQUEST"
config: {transitional: {…}, transformRequest: Array(1), transformResponse: Array(1), timeout: 0, adapter: ƒ, …}
message: "Request failed with status code 403"
name: "AxiosError"
request: XMLHttpRequest {onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, …}
response: {data: {…}, status: 403, statusText: 'Forbidden', headers: {…}, config: {…}, …}
[[Prototype]]: Error


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source