node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »



Service for creating and checking temporary tokens.

NPM version Build status Dependency Status devDependency Status Coverage Status Code Climate


import TokenService  from 'sf-token';
import createObjectId from 'mongodb/objectid';
// Create a token service instance 
let tokenService = new TokenService({
  uniqueId: createObjectId,
  secret: 'mysecret',
// create a token: the content may be any JSON serializable data 
let endOfLife = + 36000;
let {hash, ...envelope} = Service.createToken({
  method: 'GET',
  uri: '/user/abbacacaabbacacaabbacaca/subscriptions/report_received',
}, endOfLife);
// `hash` is for the client, you'll need it and `_id` to check the token 
// validity 
// `envelope` contains the token id (`_id` key), its validity (`endOfLife` key) 
// and the given contents (`contents` key), you can store it as is in your 
// database 
// when the user connect to a uri 
myApp.get('/tokens/:_id?hash=:hash', (req, res, next) {
    .then((envelope) => {
      tokenService.checkToken(envelope, req.hash);
      // Accept access (redirection may be based on the `envelope` contents ) 
    }).catch(f(err) => {
      // Refuse access 

Note that this only verify the hash and its validity regarding to the current time. You'll have to manage persistence yourself.