ForestAgent-NodeJS : How to access the context to identify user in a 3rd party tool (like Sentry)

For the record, here is what I did

To identify user in Sentry

 // identify user based on jwt
  app.use((req, res, next) => {
    if (req.headers.authorization) {
      const [, jwtToken] = req.headers.authorization.split(' ');
      const decodedToken = jwt.decode(jwtToken, {
        complete: true,
      });

      if (decodedToken.payload.email) {
        Sentry.setUser({ email: decodedToken.payload.email });
      }
    }

    next();
  });

To report error in Sentry

// on createAgent function
const agent = createAgent({
  logger: (level, data, error) => {
      // Default logger copy pasted from: https://github.com/ForestAdmin/agent-nodejs/blob/95ee789933417ccde1be26c0ba587b38fd7d4264/packages/agent/src/utils/options-validator.ts#LL20C8-L20C8
      const loggerLevel = 'Info';
      const loggerPrefix = {
        Debug: '\x1b[34mdebug:\x1b[0m',
        Info: '\x1b[32minfo:\x1b[0m',
        Warn: '\x1b[33mwarning:\x1b[0m',
        Error: '\x1b[31merror:\x1b[0m',
      };
      const levels = Object.keys(loggerPrefix);
      if (levels.indexOf(level) >= levels.indexOf(loggerLevel)) {
        // eslint-disable-next-line no-console
        console.error(loggerPrefix[level], data);
      }
      // end of default logger

      if (level === 'Warn' || level === 'Error') {
        Sentry.captureException(error);
      }
    },

})
1 Like