UNPKG

cnpmjs.org

Version:

Private npm registry and web for Enterprise, base on MySQL and Simple Store Service

95 lines (81 loc) 2.1 kB
/**! * cnpmjs.org - services/user.js * * Copyright(c) fengmk2 and other contributors. * MIT Licensed * * Authors: * fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com) */ 'use strict'; /** * Module dependencies. */ 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); };