npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

locke-consumer

v0.2.0

Published

A toolkit for unifying user creation/deletion for apps using locke for authentication

Downloads

13

Readme

locke-consumer

Build Status

A toolkit for unifying user creation/deletion for apps using locke for authentication.

Installation

npm install locke-consumer

Constructing the locke consumer

This example assumes there is a locke-reference called locke and some kind of sql-interface called sql. Also, Bobby Tables disproves of the simplistic practices used here.

var consumer = require('locke-consumer');

var users = consumer.construct({

  // Give the consumer a reference to a locke-api
  locke: locke,

  // This function should create a user with the given username and meta data and then invoke the callback.
  // The callback doesn't take any arguments, except for an error (if there is one).
  // Note: there is no need to check if the username if available; it has already been ensured.
  createUser: function(username, userdata, callback) {
    sql.query('INSERT INTO users(name, account, admin) VALUES ("' + username + '", ' + userdata.acount + ', ' + userdata.admin + ')', function(err) {
      callback(err);
    });
  },

  // must be stateless.........................................................
  existsUser: function(username, callback) {
    sql.query('SELECT COUNT(*) FROM users WHERE users.name = ' + username, function(err, result) {
      callback(err, result > 0);
    });
  },

  // This function should delete the given user and then invoke the callback.
  // The callback doesn't take any arguments, except for an error (if there is one).
  // Note: attempting to delete a non-existing user should NOT be an error.
  deleteUser: function(username, callback) {
    sql.query('DELETE users WHERE users.name = ' + username, function(err) {
      callback(err);
    });
  }
});

Creating and deleting users

users.create('myapp', '[email protected]', 'foobar', { meta: 'data', anything: 'goes' }, function(err) {
  // User was created if err is undefined
});

users.del('myapp', 'rick@astley', 'foobar', function(err) {
  // User was deleted if err is undefined
});

Creating and deleting users locally

This way of creating/deleting users prevent this particular interface from ever accessing the plain text password.

Typical usage would be to have a client-side script create/delete the locke-user and then invoke these methods server-side.

Note that the function createLocal requires a token as arguments, which can be produced by calling locke.authPassword (on the client, or similar).

users.createLocal('myapp', '[email protected]', 'TOKEN', { meta: 'data', anything: 'goes' }, function(err) {
  // User was created if err is undefined
});

users.delLocal('myapp', 'rick@astley', function(err) {
  // User was deleted if err is undefined
});

ToDo

  • Invoking authPassword should not generate a token; it should just check if the password is correct.
  • When using the "local" functions, should they be complemented by some client-side functions for the locke-interaction?
  • Should there also be utility functions for creating indirect users (with other user ids than emails)