Files
cnpmjs.org/services/user.js
2017-08-21 19:58:25 +08:00

81 lines
1.8 KiB
JavaScript

'use strict';
var config = require('../config');
var User = require('../models').User;
if (!config.userService) {
var DefaultUserService = require('./default_user_service');
config.userService = new DefaultUserService();
config.customUserService = false;
} else {
config.customUserService = true;
}
config.scopes = config.scopes || [];
function convertUser(user) {
if (!user) {
return null;
}
user.scopes = user.scopes || [];
if (user.scopes.length === 0 && config.scopes.length > 0) {
user.scopes = config.scopes.slice();
}
return user;
}
exports.auth = function* (login, password) {
var user = yield config.userService.auth(login, password);
return convertUser(user);
};
exports.get = function* (login) {
var user = yield config.userService.get(login);
return convertUser(user);
};
exports.list = function* (logins) {
var users = yield config.userService.list(logins);
return users.map(convertUser);
};
exports.search = function* (query, options) {
var users = yield config.userService.search(query, options);
return users.map(convertUser);
};
exports.getAndSave = function* (login) {
if (config.customUserService) {
var user = yield exports.get(login);
if (user) {
var data = {
user: user
};
yield User.saveCustomUser(data);
}
}
return yield User.findByName(login);
};
exports.authAndSave = function* (login, password) {
var user = yield exports.auth(login, password);
if (user) {
if (config.customUserService) {
// make sure sync user meta to cnpm database
var data = {
rev: Date.now() + '-' + user.login,
user: user
};
yield User.saveCustomUser(data);
}
}
return user;
};
exports.add = function* (user) {
return yield User.add(user);
};
exports.update = function* (user) {
return yield User.update(user);
};