mozu-multipass
Local authentication ticket cache for the Mozu Node SDK, permitting the sharing of auth tickets between processes.
Last updated 5 years ago by jzetlen .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install mozu-multipass 
SYNC missed versions from official npm registry.

Mozu Multipass

var Multipass = require('mozu-multipass');
var MozuNodeSDK = require('mozu-node-sdk');
var client = MozuNodeSDK.client(null, { plugins: [Multipass] })

The above gives you a Mozu Node SDK client that stores all its authentication tickets persistently in your home directory. This speeds up access, helps you avoid storing plaintext passwords, and in the best of circumstances, will ask you for your password maximum once every twenty-four hours.

It implements an API that the Mozu Node SDK will accept as an authenticationStorage parameter in the second argument to MozuNodeSDK.client(). The SDK's default authenticationStorage is in-memory, and does not persist between sessions or get shared between processes. Multipass fixes this by reimplementing the get and set methods with a backing store in your home directory, a file called .mozu.authentication-cache.json. This is invisible to the SDK and they work perfectly together. They're newlyweds. Just met. You know how it is. They bumped into each other, sparks happen.

Methods

Don't use these directly. They're here for illustrative purposes. They should plug into the SDK.

Get

// Three types of claim: developer, admin-user, application
// All require an app key in the context.
// developer requires a developerAccountId and developerAccount.emailAddress.
// admin-user requires a tenant and adminUser.emailAddress
multipass.get('developer', client.context, function(err, ticket) {
    // if no valid ticket exists, `ticket` will simply be undefined
});

Set

multipass.set('admin-user', client.context, ticket, function(err) {

});

Remove (optional extension)

multipass.remove('admin-user', client.context, function(err) {

});

Example Extension

You can extend Multipass easily, using regular old JavaScript techniques, to add cool features. Here's one that uses Inquirer to prompt for a developer password when it's time to get a developer ticket.

var Multipass = require('mozu-multipass');
var inquirer = require('inquirer');
function PromptingPass(client) {
  var proto = Multipass(client);
  var promptingPass = Object.create(proto);
  promptingPass.get = function(claimtype, context, callback) {
    return proto.get.call(this, claimtype, context, function(err, ticket) {
      if (claimtype === "developer" && !ticket && !context.developerAccount.password) {
        process.stdout.write('\u0007'); // ding!
        inquirer.prompt([{
          type: 'password',
          name: 'password',
          message: 'Developer password for ' + context.developerAccount.emailAddress + ':',
          validate: function(str) {
            return !!str;
          }
        }], function(answers) {
          context.developerAccount.password = answers.password;
          callback(null, null);
        });
      } else {
        callback(null, ticket);
      }
    });
  };
  return client.authenticationStorage = promptingPass;
};

var promptingClient = require('mozu-node-sdk').client(null, {
  plugins: [PromptingPass]
});

Current Tags

  • 0.3.3                                ...           latest (5 years ago)

11 Versions

  • 0.3.3                                ...           5 years ago
  • 0.3.1                                ...           5 years ago
  • 0.3.0                                ...           5 years ago
  • 0.2.5                                ...           5 years ago
  • 0.2.4                                ...           5 years ago
  • 0.2.3                                ...           5 years ago
  • 0.2.2                                ...           5 years ago
  • 0.2.1                                ...           5 years ago
  • 0.2.0                                ...           5 years ago
  • 0.1.4                                ...           6 years ago
  • 0.1.3                                ...           6 years ago
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (2)
Dev Dependencies (4)
Dependents (1)

Copyright 2014 - 2016 © taobao.org |