all files / src/user/ password.js

45.45% Statements 10/22
30% Branches 3/10
25% Functions 2/8
45.45% Lines 10/22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                                                                         
'use strict';
 
var async = require('async');
var nconf = require('nconf');
 
var db = require('../database');
var Password = require('../password');
 
module.exports = function(User) {
 
	User.hashPassword = function(password, callback) {
		Iif (!password) {
			return callback(null, password);
		}
 
		Password.hash(nconf.get('bcrypt_rounds') || 12, password, callback);
	};
 
	User.isPasswordCorrect = function(uid, password, callback) {
		password = password || '';
		async.waterfall([
			function (next) {
				db.getObjectField('user:' + uid, 'password', next);
			},
			function (hashedPassword, next) {
				if (!hashedPassword) {
					return callback(null, true);
				}
 
				User.isPasswordValid(password, function(err) {
					if (err) {
						return next(err);
					}
 
					Password.compare(password, hashedPassword, next);
				});
			}
		], callback);
	};
 
	User.hasPassword = function(uid, callback) {
		db.getObjectField('user:' + uid, 'password', function(err, hashedPassword) {
			callback(err, !!hashedPassword);
		});
	};
 
};