node package manager

sf-token

sf-token

Service for creating and checking temporary tokens.

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

Usage

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 = Date.now() + 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) {
  getFromDb(req._id)
    .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.