3 * Copyright 2016 RIFT.IO Inc
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 // DescriptorModelMeta API (NSD + VNFD)
21 var UserManagement
= {};
22 var Promise
= require('bluebird');
23 var rp
= require('request-promise');
24 var Promise
= require('promise');
25 var constants
= require('../../api_utils/constants');
26 var utils
= require('../../api_utils/utils');
27 var _
= require('lodash');
28 var ProjectManagementAPI
= require('./projectManagementAPI.js');
30 UserManagement
.get = function(req
) {
32 var api_server
= req
.query
['api_server'];
34 return new Promise(function(resolve
, reject
) {
37 uri
: utils
.confdPort(api_server
) + '/api/operational/user-config/user',
39 headers
: _
.extend({}, constants
.HTTP_HEADERS
.accept
.data
, {
40 'Authorization': req
.session
&& req
.session
.authorization
42 forever
: constants
.FOREVER_ON
,
43 rejectUnauthorized
: false,
44 resolveWithFullResponse
: true
46 ]).then(function(result
) {
48 response
['data'] = {};
50 response
['data']['user'] = JSON
.parse(result
[0].body
)['rw-user:user'];
52 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.SUCCESS
.OK
55 }).catch(function(error
) {
57 console
.log('Problem with UserManagement.get', error
);
58 response
.statusCode
= error
.statusCode
|| 500;
59 response
.errorMessage
= {
60 error
: 'Failed to get UserManagement' + error
68 UserManagement
.getProfile = function(req
) {
70 var api_server
= req
.query
['api_server'];
71 return new Promise(function(resolve
, reject
) {
74 var userId
= req
.session
.userdata
.username
77 projectId
: req
.session
.projectId
79 UserManagement
.getUserInfo(req
, userId
).then(function(result
) {
80 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.SUCCESS
.OK
;
81 response
.data
.data
= result
.data
84 console
.log('Error retrieving getUserInfo');
85 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.ERROR
.INTERNAL_SERVER_ERROR
;
89 response
.data
.data
= e
;
90 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.ERROR
.INTERNAL_SERVER_ERROR
;
96 UserManagement
.getUserInfo = function(req
, userId
, domain
) {
98 var api_server
= req
.query
['api_server'];
99 var id
= req
.params
['userId'] || userId
;
100 var domain
= req
.params
['domainId'] || domain
;
102 return new Promise(function(resolve
, reject
) {
104 var getProjects
= ProjectManagementAPI
.get(req
)
105 var getPlatformUser
= ProjectManagementAPI
.getPlatform(req
, id
)
109 ]).then(function(result
) {
116 //id/key values for each project
121 * data: [project object],
129 //Build project roles
130 var projects
= result
[0].data
.project
;
131 var userProjects
= [];
132 projects
&& projects
.map(function(p
, i
) {
133 var users
= p
['project-config'] && p
['project-config'].user
;
134 userData
.projectId
.push(p
.name
);
135 users
&& users
.map(function(u
) {
136 if(u
['user-name'] == id
) {
137 userData
.project
[p
.name
] = {
141 u
.role
&& u
.role
.map(function(r
) {
142 userData
.project
[p
.name
].role
[r
.role
] = true
144 u
["rw-project-mano:mano-role"] && u
["rw-project-mano:mano-role"] .map(function(r
) {
145 userData
.project
[p
.name
].role
[r
.role
] = true
150 //Build platform roles
151 var platformRoles
= result
[1].data
.platform
&& result
[1].data
.platform
.role
;
152 platformRoles
&& platformRoles
.map(function(r
) {
153 userData
.platform
.role
[r
.role
] = true
155 response
.data
= userData
;
156 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.SUCCESS
.OK
160 var errorMsg
= 'userId not specified in UserManagement.getUserInfo';
161 console
.error(errorMsg
);
162 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.ERROR
.BAD_REQUEST
;
163 response
.error
= errorMsg
;
169 UserManagement
.create = function(req
) {
171 var api_server
= req
.query
['api_server'];
176 return new Promise(function(resolve
, reject
) {
179 uri
: utils
.confdPort(api_server
) + '/api/config/user-config',
181 headers
: _
.extend({}, constants
.HTTP_HEADERS
.accept
.data
, {
182 'Authorization': req
.session
&& req
.session
.authorization
184 forever
: constants
.FOREVER_ON
,
186 rejectUnauthorized
: false,
187 resolveWithFullResponse
: true
189 ]).then(function(result
) {
191 response
['data'] = {};
192 if (result
[0].body
) {
193 response
['data'] = result
[0].body
;
195 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.SUCCESS
.OK
198 }).catch(function(error
) {
200 console
.log('Problem with UserManagement.create', error
);
201 response
.statusCode
= error
.statusCode
|| 500;
202 response
.errorMessage
= {
203 error
: 'Failed to create user' + error
209 UserManagement
.update = function(req
) {
211 var api_server
= req
.query
['api_server'];
212 var bodyData
= req
.body
;
216 var updateTasks
= [];
217 if(bodyData
.hasOwnProperty('old-password')) {
219 uri
: utils
.confdPort(api_server
) + '/api/operations/change-password',
221 headers
: _
.extend({}, constants
.HTTP_HEADERS
.accept
.data
, {
222 'Authorization': req
.session
&& req
.session
.authorization
224 forever
: constants
.FOREVER_ON
,
227 'user-name' : bodyData
['user-name'],
228 'user-domain' : bodyData
['user-domain'],
229 'old-password' : bodyData
['old-password'],
230 'new-password' : bodyData
['new-password'],
231 'confirm-password' : bodyData
['confirm-password'],
234 rejectUnauthorized
: false,
235 resolveWithFullResponse
: true
237 updateTasks
.push(changePW
);
239 var updateUser
= rp({
240 uri
: utils
.confdPort(api_server
) + '/api/config/user-config',
242 headers
: _
.extend({}, constants
.HTTP_HEADERS
.accept
.data
, {
243 'Authorization': req
.session
&& req
.session
.authorization
245 forever
: constants
.FOREVER_ON
,
247 rejectUnauthorized
: false,
248 resolveWithFullResponse
: true
250 updateTasks
.push(updateUser
)
251 return new Promise(function(resolve
, reject
) {
254 ]).then(function(result
) {
256 response
['data'] = {};
257 if (result
[0].body
) {
258 response
['data'] = result
[0].body
;
260 response
.statusCode
= constants
.HTTP_RESPONSE_CODES
.SUCCESS
.OK
263 }).catch(function(error
) {
265 console
.log('Problem with UserManagement.passwordChange', error
);
266 response
.statusCode
= error
.statusCode
|| 500;
267 response
.errorMessage
= {
268 error
: 'Failed to passwordChange user' + error
275 UserManagement
.delete = function(req
) {
277 var username
= req
.params
.username
;
278 var domain
= req
.params
.domain
;
279 var api_server
= req
.query
["api_server"];
280 var requestHeaders
= {};
281 var url
= `${utils.confdPort(api_server)}/api/config/user-config/user/${username},${domain}`
282 return new Promise(function(resolve
, reject
) {
283 _
.extend(requestHeaders
,
284 constants
.HTTP_HEADERS
.accept
.data
,
285 constants
.HTTP_HEADERS
.content_type
.data
, {
286 'Authorization': req
.session
&& req
.session
.authorization
291 headers
: requestHeaders
,
292 forever
: constants
.FOREVER_ON
,
293 rejectUnauthorized
: false,
294 }, function(error
, response
, body
) {
295 if (utils
.validateResponse('UserManagement.DELETE', error
, response
, body
, resolve
, reject
)) {
297 statusCode
: response
.statusCode
,
298 data
: JSON
.stringify(response
.body
)
304 module
.exports
= UserManagement
;