Files
cnpmjs.org/controllers/web/user.js
2014-09-24 18:21:31 +08:00

83 lines
1.8 KiB
JavaScript

/**!
* cnpmjs.org - controllers/web/package.js
*
* Copyright(c) cnpmjs.org and other contributors.
* MIT Licensed
*
* Authors:
* dead_horse <dead_horse@qq.com> (http://deadhorse.me)
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
*/
'use strict';
/**
* Module dependencies.
*/
var config = require('../../config');
var Module = require('../../proxy/module');
var User = require('../../proxy/user');
var UserService = require('../../services/user');
var common = require('../../lib/common');
exports.display = function* (next) {
var name = this.params.name;
var isAdmin = common.isAdmin(name);
var scopes = config.scopes || [];
if (config.customUserService) {
var customUser = yield* UserService.get(name);
if (customUser) {
isAdmin = !!customUser.site_admin;
scopes = customUser.scopes;
var data = {
user: customUser
};
yield* User.saveCustomUser(data);
}
}
var r = yield [Module.listByAuthor(name), User.get(name)];
var packages = r[0] || [];
var user = r[1];
if (!user && !packages.length) {
return yield* next;
}
user = user || {};
var data = {
name: name,
email: user.email,
json: user.json || {}
};
if (data.json.login) {
// custom user format
// convert to npm user format
var json = data.json;
data.json = {
_id: 'org.couchdb.user:' + user.name,
_rev: user.rev,
name: user.name,
email: user.email,
type: 'user',
roles: [],
date: user.gmt_modified,
avatar: json.avatar_url,
fullname: json.name || json.login,
homepage: json.html_url,
im: json.im_url
};
}
yield this.render('profile', {
title: 'User - ' + name,
packages: packages,
user: data,
lastModified: user && user.gmt_modified,
isAdmin: isAdmin,
scopes: scopes
});
};