On my project I inject custom info about user stored in user_metada, or app_metadata in the JWT using rule like this:
function (user, context, callback) {
//const userAppsRoles = (context.authorization || {}).roles;
//const connectionID = (context || {}).connectionID;
// app_metadata
const userAppMetadata = user.app_metadata = user.app_metadata || {};
const userCustomerId = userAppMetadata.cid = userAppMetadata.cid || null;
// user_metadada
const userUserMetadata = user.user_metadata = user.user_metadata || {};
const userLanguage = userUserMetadata.language = userUserMetadata.language || null;
let idTokenClaims = context.idToken || {};
let accessTokenClaims = context.accessToken || {};
idTokenClaims[configuration.NAMESPACE + 'cid'] = userCustomerId;
accessTokenClaims[configuration.NAMESPACE + 'cid'] = userCustomerId;
idTokenClaims[configuration.NAMESPACE + 'language'] = userLanguage;
accessTokenClaims[configuration.NAMESPACE + 'language'] = userLanguage;
context.idToken = idTokenClaims;
context.accessToken = accessTokenClaims;
callback(null, user, context);
}