nodeclub/proxy/user.js

125 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var models = require('../models');
var User = models.User;
var utility = require('utility');
/**
* 根据用户名列表查找用户列表
* Callback:
* - err, 数据库异常
* - users, 用户列表
* @param {Array} names 用户名列表
* @param {Function} callback 回调函数
*/
exports.getUsersByNames = function (names, callback) {
if (names.length === 0) {
return callback(null, []);
}
User.find({ loginname: { $in: names } }, callback);
};
/**
* 根据登录名查找用户
* Callback:
* - err, 数据库异常
* - user, 用户
* @param {String} loginName 登录名
* @param {Function} callback 回调函数
*/
exports.getUserByLoginName = function (loginName, callback) {
User.findOne({'loginname': loginName}, callback);
};
/**
* 根据用户ID查找用户
* Callback:
* - err, 数据库异常
* - user, 用户
* @param {String} id 用户ID
* @param {Function} callback 回调函数
*/
exports.getUserById = function (id, callback) {
User.findOne({_id: id}, callback);
};
/**
* 根据用户名,查找用户
* Callback:
* - err, 数据库异常
* - user, 用户
* @param {String} name 用户名
* @param {Function} callback 回调函数
*/
exports.getUserByName = function (name, callback) {
User.findOne({name: name}, callback);
};
/**
* 根据邮箱,查找用户
* Callback:
* - err, 数据库异常
* - user, 用户
* @param {String} email 邮箱地址
* @param {Function} callback 回调函数
*/
exports.getUserByMail = function (email, callback) {
User.findOne({email: email}, callback);
};
/**
* 根据用户ID列表获取一组用户
* Callback:
* - err, 数据库异常
* - users, 用户列表
* @param {Array} ids 用户ID列表
* @param {Function} callback 回调函数
*/
exports.getUsersByIds = function (ids, callback) {
User.find({'_id': {'$in': ids}}, callback);
};
/**
* 根据关键字,获取一组用户
* Callback:
* - err, 数据库异常
* - users, 用户列表
* @param {String} query 关键字
* @param {Object} opt 选项
* @param {Function} callback 回调函数
*/
exports.getUsersByQuery = function (query, opt, callback) {
User.find(query, [], opt, callback);
};
/**
* 根据查询条件,获取一个用户
* Callback:
* - err, 数据库异常
* - user, 用户
* @param {String} name 用户名
* @param {String} key 激活码
* @param {Function} callback 回调函数
*/
exports.getUserByQuery = function (name, key, callback) {
User.findOne({name: name, retrieve_key: key}, callback);
};
exports.newAndSave = function (name, loginname, pass, email, avatar_url, active, callback) {
var user = new User();
user.name = loginname;
user.loginname = loginname;
user.pass = pass;
user.email = email;
user.avatar = avatar_url;
user.active = false;
user.save(callback);
};
var makeGravatar = function (email) {
return 'http://www.gravatar.com/avatar/' + utility.md5(email.toLowerCase()) + '?size=48';
};
exports.makeGravatar = makeGravatar;
exports.getGravatar = function (user) {
return user.avatar || makeGravatar(user);
};