Im trying to update a user in MongoDB but it's giving me an error "You are not authenticated" why is that?

Viewed 24

Im creating a video sharing app that allows users to sign in and update their profiles. i've created an error handler to identify errors in the backend and when im submitting my put request to update a user its going off.

here are my routes that im using

import express from 'express';
import { update} from '../controllers/user.js'
import { verifyToken } from '../verifyToken.js';

const router = express.Router();

router.put("/:id", verifyToken, update);

here is the controller for updating the user

import { createError } from "../error.js";
import User from '../models/User.js'

export const update = async (req, res, next) => {

    if(req.params.id === req.user.id) {
        try {
            const updatedUser = await User.findByIdAndUpdate(req.params.id, {
                $set: req.body
            }, {new: true})
            res.status(200).json(updatedUser)
        } catch (error) {
            next(error)
        }
    } else {
        return next(createError(403, 'You can only update this account'));
    }
}

here is the custom error handling im using which is in the index.js below and error.js

app.use((err, req, res, next) => {
    const status = err.status || 500
    const message = err.message || "something went wrong"
    return res.status(status).json({
        success: false,
        status,
        message
    })
})

export const createError = (status, message) => {
    const err = new Error()
    err.status=status
    err.message=message
    return err
}

here is the middleware for the token

import jwt from 'jsonwebtoken'
import { createError } from './error.js'

export const verifyToken = (req, res, next) => {
    const token = req.cookies.acess_token
    if(!token) return next(createError(401, 'You are not authenticated'))

    jwt.verify(token, process.env.JWT, (err, user)=>{
        if(err) return next(createError(403, "Token invalid"))
        req.user = user
        next()
    })
}
0 Answers
Related