Skip to content

simple headerbased X-API-TOKEN authentication for 3rd party api auth (+ google analytics for API metrics)

License

Notifications You must be signed in to change notification settings

klinikpintar/dpd-api-token

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple, Sessionless api-token authentication for deployd with Ganalytics API metrics support

Usage

$ npm install dpd-acl-roles-permissions dpd-api-token --save

app.js:

  require('dpd-api-token')( require('deployd/lib/router'), 'users','apikey')  // <----- add this
  try{
    var deployd = require('deployd')
    var dpd = deployd({port:3000});
    dpd.listen();
  }catch(e){
    console.error(err.toString()) // becomes exception in analytics 
  }

test on the commandline:

$ curl -X GET "http://localhost:1882/foo"
{"message":"no permission / not loggedin (session expired)", "status":401, "statusCode":401}

$ curl -X GET -H 'X-API-VERSION: 1.0' -H 'X-API-TOKEN: foo' "http://localhost:1882/foo"
[]

NOTE: Follow dpd-acl-roles-permissions tutorial. Once you got permissions going, come back here, and specify your resource-usercollection above ('users') and its property which holds the apikey ('apikey').

Notes

  • both X-API-VERSION and X-API-TOKEN should be specified (version is only used for analytics ) {
  • req.user or ctx.req.user is populated with the user when an X-API-TOKEN-header matches apikey of a users-collection.

Api metrics using google analytics (GA)

make sure you set these environment variables:

  • export GA_TOKEN=XX-XXXXXX
  • export NODE_ENV=production
  • export APINAME=myapi
  • export GA_BUFFERTIME=5000

Basically each request is buffered, and sent as google analytics events every GA_BUFFERTIME milliseconds.

You can view realtime requests at Realtime > Events, or create dashboards to sort/display the events.

NOTE: you can add events to analytics, anywhere from within deployd :

process.server.ga.event("action name", "label/value")      // buffered event (adviced)
process.server.ga.timing("category", "actionname", 12)     // buffered event (adviced)
console.error("something went wrong")                      // sends exception 
process.server.ga.ua                                       // universal analytics object for unbuffered use 

}

for more info on ua usage see docs

NOTE: this module also tracks the processing time of each request (see 'Server Response Time' in google analytics pageviews)

About

simple headerbased X-API-TOKEN authentication for 3rd party api auth (+ google analytics for API metrics)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%