Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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