Project UI updates and bug fixes
[osm/UI.git] / skyquake / framework / core / modules / api / userManagementAPI.js
1 /*
2 *
3 * Copyright 2016 RIFT.IO Inc
4 *
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
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
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.
16 *
17 */
18 // DescriptorModelMeta API (NSD + VNFD)
19
20
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
29 UserManagement.get = function(req) {
30 var self = this;
31 var api_server = req.query['api_server'];
32
33 return new Promise(function(resolve, reject) {
34 Promise.all([
35 rp({
36 uri: utils.confdPort(api_server) + '/api/operational/user-config/user',
37 method: 'GET',
38 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
39 'Authorization': req.session && req.session.authorization
40 }),
41 forever: constants.FOREVER_ON,
42 rejectUnauthorized: false,
43 resolveWithFullResponse: true
44 })
45 ]).then(function(result) {
46 var response = {};
47 response['data'] = {};
48 if (result[0].body) {
49 response['data']['user'] = JSON.parse(result[0].body)['rw-user:user'];
50 }
51 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
52
53 resolve(response);
54 }).catch(function(error) {
55 var response = {};
56 console.log('Problem with UserManagement.get', error);
57 response.statusCode = error.statusCode || 500;
58 response.errorMessage = {
59 error: 'Failed to get UserManagement' + error
60 };
61 reject(response);
62 });
63 });
64 };
65
66 UserManagement.getProfile = function(req) {
67 var self = this;
68 var api_server = req.query['api_server'];
69 return new Promise(function(resolve, reject) {
70 var response = {};
71 response['data'] = {
72 userId: req.session.userdata.username,
73 projectId: req.session.projectId
74 };
75 // if (result[0].body) {
76 // response['data']['users'] = JSON.parse(result[0].body)['rw-user:users'];
77 // }
78 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
79
80 resolve(response);
81 });
82 };
83 UserManagement.create = function(req) {
84 var self = this;
85 var api_server = req.query['api_server'];
86 var data = req.body;
87 data = {
88 "user":[data]
89 }
90 return new Promise(function(resolve, reject) {
91 Promise.all([
92 rp({
93 uri: utils.confdPort(api_server) + '/api/config/user-config',
94 method: 'POST',
95 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
96 'Authorization': req.session && req.session.authorization
97 }),
98 forever: constants.FOREVER_ON,
99 json: data,
100 rejectUnauthorized: false,
101 resolveWithFullResponse: true
102 })
103 ]).then(function(result) {
104 var response = {};
105 response['data'] = {};
106 if (result[0].body) {
107 response['data'] = result[0].body;
108 }
109 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
110
111 resolve(response);
112 }).catch(function(error) {
113 var response = {};
114 console.log('Problem with UserManagement.create', error);
115 response.statusCode = error.statusCode || 500;
116 response.errorMessage = {
117 error: 'Failed to create user' + error
118 };
119 reject(response);
120 });
121 });
122 };
123 UserManagement.update = function(req) {
124 var self = this;
125 var api_server = req.query['api_server'];
126 var bodyData = req.body;
127 data = {
128 "user":[bodyData]
129 }
130 var updateTasks = [];
131 if(bodyData.hasOwnProperty('old-password')) {
132 var changePW = rp({
133 uri: utils.confdPort(api_server) + '/api/operations/change-password',
134 method: 'POST',
135 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
136 'Authorization': req.session && req.session.authorization
137 }),
138 forever: constants.FOREVER_ON,
139 json: {
140 "input": {
141 'user-name' : bodyData['user-name'],
142 'user-domain' : bodyData['user-domain'],
143 'old-password' : bodyData['old-password'],
144 'new-password' : bodyData['new-password'],
145 'confirm-password' : bodyData['confirm-password'],
146 }
147 },
148 rejectUnauthorized: false,
149 resolveWithFullResponse: true
150 });
151 updateTasks.push(changePW);
152 };
153 var updateUser = rp({
154 uri: utils.confdPort(api_server) + '/api/config/user-config',
155 method: 'PUT',
156 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
157 'Authorization': req.session && req.session.authorization
158 }),
159 forever: constants.FOREVER_ON,
160 json: data,
161 rejectUnauthorized: false,
162 resolveWithFullResponse: true
163 });
164 updateTasks.push(updateUser)
165 return new Promise(function(resolve, reject) {
166 Promise.all([
167 updateTasks
168 ]).then(function(result) {
169 var response = {};
170 response['data'] = {};
171 if (result[0].body) {
172 response['data'] = result[0].body;
173 }
174 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
175
176 resolve(response);
177 }).catch(function(error) {
178 var response = {};
179 console.log('Problem with UserManagement.passwordChange', error);
180 response.statusCode = error.statusCode || 500;
181 response.errorMessage = {
182 error: 'Failed to passwordChange user' + error
183 };
184 reject(response);
185 });
186 });
187 };
188
189 UserManagement.delete = function(req) {
190 var self = this;
191 var username = req.params.username;
192 var domain = req.params.domain;
193 var api_server = req.query["api_server"];
194 var requestHeaders = {};
195 var url = `${utils.confdPort(api_server)}/api/config/user-config/user/${username},${domain}`
196 return new Promise(function(resolve, reject) {
197 _.extend(requestHeaders,
198 constants.HTTP_HEADERS.accept.data,
199 constants.HTTP_HEADERS.content_type.data, {
200 'Authorization': req.session && req.session.authorization
201 });
202 rp({
203 url: url,
204 method: 'DELETE',
205 headers: requestHeaders,
206 forever: constants.FOREVER_ON,
207 rejectUnauthorized: false,
208 }, function(error, response, body) {
209 if (utils.validateResponse('UserManagement.DELETE', error, response, body, resolve, reject)) {
210 return resolve({
211 statusCode: response.statusCode,
212 data: JSON.stringify(response.body)
213 });
214 };
215 });
216 })
217 }
218 module.exports = UserManagement;