lockit-mongodb-adapter

MongoDB adapter for lockit

npm install lockit-mongodb-adapter
9 downloads in the last week
53 downloads in the last month

Lockit MongoDB adapter

Build Status NPM version

MongoDB adapter for Lockit.

Installation

npm install lockit-mongodb-adapter

var adapter = require('lockit-mongodb-adapter');

Configuration

The following setting is required.

exports.db = {
  url: 'mongodb://127.0.0.1/',
  name: 'test',
  collection: 'users'
};

Features

1. Create user

adapter.save(name, email, pass, callback)

  • name: String - i.e. 'john'
  • email: String - i.e. 'john@email.com'
  • pass: String - i.e. 'password123'
  • callback: Function - callback(err, user) where user is the new user now in our database.

The user object has the following properties

  • name: username chosen during sign up
  • email: email that was provided at the beginning
  • signupTimestamp: Date object to remember when the user signed up
  • signupToken: unique token sent to user's email for email verification
  • signupTokenExpires: Date object usually 24h ahead of signupTimestamp
  • failedLoginAttempts: save failed login attempts during login process, default is 0
  • salt: salt generated by crypto.randomBytes()
  • derived_key: password hash generated by pbkdf2
  • _id: document id
adapter.save('john', 'john@email.com', 'secret', function(err, user) {
  if (err) console.log(err);
  console.log(user);
  // {
  //  name: 'john',
  //  email: 'john@email.com',
  //  signupToken: 'ef32a95a-d6ee-405a-8e4b-515b235f7c54',
  //  signupTimestamp: Wed Jan 15 2014 19:08:27 GMT+0100 (CET),
  //  signupTokenExpires: Wed Jan 15 2014 19:08:27 GMT+0100 (CET),
  //  failedLoginAttempts: 0,
  //  salt: '48cf9da376703199c30ba5c274580c98',
  //  derived_key: '502967e5a6e55091f4c2c80e7989623f051070fd',
  //  _id: 52d6ce9b651b4d825351641f
  // }
});

2. Find user

adapter.find(match, query, callback)

  • match: String - one of the following: 'name', 'email' or 'signupToken'
  • query: String - corresponds to match, i.e. 'john@email.com'
  • callback: Function - callback(err, user)
adapter.find('name', 'john', function(err, user) {
  if (err) console.log(err);
  console.log(user);
  // {
  //   name: 'john',
  //   email: 'john@email.com',
  //   signupToken: '3a7f0f54-32f0-44f7-97c6-f1470b94c170',
  //   signupTimestamp: Fri Apr 11 2014 21:31:54 GMT+0200 (CEST),
  //   signupTokenExpires: Sat Apr 12 2014 21:31:54 GMT+0200 (CEST),
  //   failedLoginAttempts: 0,
  //   salt: '753981e8d8e30e8047cf5685d1f0a0d4',
  //   derived_key: '18ce03eddab6729aeaaf76729c90cb31f16a863c',
  //   _id: 5348432a98a8a6a4fef1f595
  // }
});

3. Update user

adapter.update(user, callback)

  • user: Object - must have _id and _rev properties
  • callback: Function - callback(err, user) - user is the updated user object
// get a user from db first
adapter.find('name', 'john', function(err, user) {
  if (err) console.log(err);

  // add some new properties to our existing user
  user.newKey = 'and some value';
  user.hasBeenUpdated = true;

  // save updated user to db
  adapter.update(user, function(err, user) {
    if (err) console.log(err);
    // ...
  });
});

4. Remove user

adapter.remove(name, callback)

  • name: String
  • callback: Function - callback(err, res) - res is true if everything went fine
adapter.remove('john', function(err, res) {
  if (err) console.log(err);
  console.log(res);
  // true
});

Test

grunt

License

MIT

npm loves you