lockit-mongodb-adapter

MongoDB adapter for lockit

Lockit MongoDB adapter

MongoDB adapter for Lockit.

npm install lockit-mongodb-adapter

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

The following setting is required.

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

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(erruser) {
  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 
  // } 
});

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(erruser) {
  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 
  // } 
});

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(erruser) {
  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(erruser) {
    if (err) console.log(err);
    // ... 
  });
});

adapter.remove(name, callback)

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

grunt

MIT