var constants = require('../../api_utils/constants');
var utils = require('../../api_utils/utils');
var _ = require('lodash');
+var ProjectManagementAPI = require('./projectManagementAPI.js');
UserManagement.get = function(req) {
var self = this;
var api_server = req.query['api_server'];
return new Promise(function(resolve, reject) {
- Promise.all([
- rp({
+ var userConfig = rp({
uri: utils.confdPort(api_server) + '/api/operational/user-config/user',
method: 'GET',
headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
forever: constants.FOREVER_ON,
rejectUnauthorized: false,
resolveWithFullResponse: true
+ });
+ var userOp = rp({
+ uri: utils.confdPort(api_server) + '/api/operational/user-state/user',
+ method: 'GET',
+ headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
+ 'Authorization': req.session && req.session.authorization
+ }),
+ forever: constants.FOREVER_ON,
+ rejectUnauthorized: false,
+ resolveWithFullResponse: true
})
+ Promise.all([
+ userConfig,
+ userOp
]).then(function(result) {
var response = {};
response['data'] = {};
+ var resultData = [];
if (result[0].body) {
- response['data']['user'] = JSON.parse(result[0].body)['rw-user:user'];
+ resultData.push(JSON.parse(result[0].body)['rw-user:user'].sort());
+ }
+ if (result[1].body) {
+ resultData.push(JSON.parse(result[1].body)['rw-user:user'].sort());
}
response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
-
+ response['data']['user'] = resultData[0].map(function(d,i) {
+ var mergedData = _.merge(d, resultData[1][i]);
+ mergedData.projects = {
+ ids: [],
+ data: {}
+ };
+ var projects = mergedData.projects;
+ mergedData.role && mergedData.role.map(function(r) {
+ if ((r.role != "rw-project:user-self" )&& (r.role != "rw-rbac-platform:user-self")) {
+ var projectId = r.keys.split(';')[0];
+ if (projectId == "") {
+ projectId = "platform"
+ }
+ if (!projects.data[projectId]) {
+ projects.ids.push(projectId);
+ projects.data[projectId] = [];
+ }
+ projects.data[projectId].push(r.role);
+ }
+ })
+ return mergedData;
+ })
resolve(response);
}).catch(function(error) {
var response = {};
});
};
+
UserManagement.getProfile = function(req) {
var self = this;
var api_server = req.query['api_server'];
return new Promise(function(resolve, reject) {
var response = {};
+ try {
+ var userId = req.session.userdata.username
response['data'] = {
- userId: req.session.userdata.username,
- projectId: req.session.projectId
- };
- response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
-
- resolve(response);
+ userId: userId,
+ projectId: req.session.projectId
+ };
+ UserManagement.getUserInfo(req, userId).then(function(result) {
+ response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK;
+ response.data.data = result.data
+ resolve(response);
+ }, function(error) {
+ console.log('Error retrieving getUserInfo');
+ response.statusCode = constants.HTTP_RESPONSE_CODES.ERROR.INTERNAL_SERVER_ERROR;
+ reject(response);
+ })
+ } catch (e) {
+ response.data.data = e;
+ response.statusCode = constants.HTTP_RESPONSE_CODES.ERROR.INTERNAL_SERVER_ERROR;
+ reject(response);
+ reject()
+ }
});
};
+UserManagement.getUserInfo = function(req, userId, domain) {
+ var self = this;
+ var api_server = req.query['api_server'];
+ var id = req.params['userId'] || userId;
+ var domain = req.params['domainId'] || domain;
+ var response = {};
+ return new Promise(function(resolve, reject) {
+ if (id) {
+ var getProjects = ProjectManagementAPI.get(req)
+ var getPlatformUser = ProjectManagementAPI.getPlatform(req, id)
+ Promise.all([
+ getProjects,
+ getPlatformUser
+ ]).then(function(result) {
+ var userData = {
+ platform: {
+ role: {
+
+ }
+ },
+ //id/key values for each project
+ projectId:[],
+ project: {
+ /**
+ * [projectId] : {
+ * data: [project object],
+ * role: {
+ * [roleId]: true
+ * }
+ * }
+ */
+ }
+ }
+ //Build project roles
+ var projects = result[0].data.project;
+ var userProjects = [];
+ projects && projects.map(function(p, i) {
+ var users = p['project-config'] && p['project-config'].user;
+ userData.projectId.push(p.name);
+ users && users.map(function(u) {
+ if(u['user-name'] == id) {
+ userData.project[p.name] = {
+ data: p,
+ role: {}
+ }
+ u.role && u.role.map(function(r) {
+ userData.project[p.name].role[r.role] = true
+ });
+ u["rw-project-mano:mano-role"] && u["rw-project-mano:mano-role"] .map(function(r) {
+ userData.project[p.name].role[r.role] = true
+ });
+ }
+ })
+ });
+ //Build platform roles
+ var platformRoles = result[1].data.platform && result[1].data.platform.role;
+ platformRoles && platformRoles.map(function(r) {
+ userData.platform.role[r.role] = true
+ });
+ response.data = userData;
+ response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
+ resolve(response);
+ })
+ } else {
+ var errorMsg = 'userId not specified in UserManagement.getUserInfo';
+ console.error(errorMsg);
+ response.statusCode = constants.HTTP_RESPONSE_CODES.ERROR.BAD_REQUEST;
+ response.error = errorMsg;
+ reject(response)
+ }
+
+ })
+}
UserManagement.create = function(req) {
var self = this;
var api_server = req.query['api_server'];
var api_server = req.query['api_server'];
var bodyData = req.body;
data = {
- "user":[bodyData]
+ "rw-user:user": bodyData
}
var updateTasks = [];
if(bodyData.hasOwnProperty('old-password')) {
updateTasks.push(changePW);
};
var updateUser = rp({
- uri: utils.confdPort(api_server) + '/api/config/user-config',
+ uri: utils.confdPort(api_server) + '/api/config/user-config/user/' + bodyData['user-name'] + ',' + bodyData['user-domain'],
method: 'PUT',
headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
'Authorization': req.session && req.session.authorization