Missing claims in payload of jwt token

Viewed 196

As part of my login endpoint I return a generated token using the 'generateToken' function. The payload contains an object of claims(user.id and user.role). However when I log in and check the returned token I do not see any of the claims; just the 'created' and 'expires' values.

Login endpoint

async function findUserById(req, res){
    let { email, password } = req.body;
    
    try {
        const user = await db.query("SELECT * FROM user_account WHERE email = $1", [email]);

        if(!user.rows.length){
            return res.status(401).json("Invalid crendential")
        }
        
        const validPassword = await bcrypt.compareSync(password, user.rows[0].password)
        
        if(!validPassword){
            return res.status(401).json("Invalid credential");
        }
        const token = await generateToken(user);
        res.status(200).json({ user, email: user.email, token})
    } catch (error) {
        res.status(500).json({error: error.message})
    }
}

generateToken function

const jwt = require("jsonwebtoken");
const secret = require("../config/secrets");

function generateToken(user){
    const payload = {
        subject: user.id,
        role: user.role
    };
    const options = {
        expiresIn: "30d"
    };
    return jwt.sign(payload, secret.jwtSecret, options)
}

module.exports = {generateToken};
0 Answers
Related