We want to manage our own cookie for authenticating the user into our app. We will user another npm library for this.
We create a new file "authenticate/token.js" in which we will manage our own authentication token.
const jsonwebtoken = require("jsonwebtoken");
module.exports = {
getCookieName,
getCookieOptions,
createToken
};
// name our cookie
function getCookieName() {
return "my_jwt_token";
}
// same site cookie info...
function getCookieOptions() {
var objOptions= {
sameSite: "Lax"
};
if(!gConfig.isDebug){
objOptions.secure=true;
}
return objOptions
}
// JWT signed payload
function createToken(req) {
let payload = {
username: (req!=null && req.user!=null && req.user.username!=null) ? req.user.username.toString() : null,
connector: (req!=null && req.user!=null && req.user.connector!=null) ? req.user.connector : null,
blockchain: (req!=null && req.user!=null && req.user.blockchain!=null) ? req.user.blockchain : null,
authorizations: (req!=null && req.user!=null && req.user.authorizations!=null) ? req.user.authorizations : null,
provider_wallet: (req!=null && req.user!=null && req.user.provider_wallet!=null) ? req.user.provider_wallet : null,
wallet_address: (req!=null && req.user!=null && req.user.wallet_address!=null) ? req.user.wallet_address : null
};
return jsonwebtoken.sign(payload, "mySecret", {
expiresIn: "72h"
});
}