Skip to content

halafy-ds/tc-core-library-js

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tc-core-library-js

Library that contains utils, middlewares etc that can be used by all Topocder Services.

Logger

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

Util

Functions to wrap response based on V3 API specification.

Middleware

  • 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%