Library that contains utils, middlewares etc that can be used by all Topocder Services.
Sets up a Bunyan logger (https://github.com/trentm/node-bunyan) to use with the application logging. If captureLogs
is enabled logs will be pushed to Logentries using le_node library.
Note: Bunyan logger was chosen over winston because winston logger tends to flatten json metadata logged along with strings thus overwriting values with the same key name. You'll have to obtain a token for your app to integrate with logentries
Functions to wrap response based on V3 API specification.
-
jwtAuthenticator
Authenticates the JWT passed in the request header (
Authorization: Bearer eHsdfsdf3234SSDF...
).AUTH_SECRET
used to decrypt JWT can be passed in. If token is missing, invalid or expired middleware will return a HTTP 403 status. If authenticated, request object is annotated with 'authUser' object (JWT payload) which contains userId and users' roles.. -
logger
logger middleware to be used along with previously described bunyan logger that logs incoming request and response along with the response time and a requestId. RequestId is read from 'X-Request-Id' header. In case the request header is not present a unique request id is generated. A child logger is attached to both request & response objects for convenience. Please use this logger as it appends requestId to all logs associated with this request.
-
permissions
Based on attribute based access control, this middleware exposes a can() function that takes in an request object and a action to evaluate the policy associated with that action. Middleware assumes policies are already defined beforehand.