Merge "NOTICKET: Refactor with sessions. Now holds auth on server" into projects
[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/users',
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']['users'] = JSON.parse(result[0].body)['rw-user:users'];
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 UserManagement.create = function(req) {
66 var self = this;
67 var api_server = req.query['api_server'];
68 var data = req.body;
69 data = {
70 "users":[data]
71 }
72 return new Promise(function(resolve, reject) {
73 Promise.all([
74 rp({
75 uri: utils.confdPort(api_server) + '/api/config/user-config',
76 method: 'POST',
77 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
78 'Authorization': req.session && req.session.authorization
79 }),
80 forever: constants.FOREVER_ON,
81 json: data,
82 rejectUnauthorized: false,
83 resolveWithFullResponse: true
84 })
85 ]).then(function(result) {
86 var response = {};
87 response['data'] = {};
88 if (result[0].body) {
89 response['data'] = result[0].body;
90 }
91 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
92
93 resolve(response);
94 }).catch(function(error) {
95 var response = {};
96 console.log('Problem with UserManagement.create', error);
97 response.statusCode = error.statusCode || 500;
98 response.errorMessage = {
99 error: 'Failed to create user' + error
100 };
101 reject(response);
102 });
103 });
104 };
105 UserManagement.update = function(req) {
106 var self = this;
107 var api_server = req.query['api_server'];
108 var bodyData = req.body;
109 data = {
110 "users":[bodyData]
111 }
112 var updateTasks = [];
113 if(bodyData.hasOwnProperty('old-password')) {
114 var changePW = rp({
115 uri: utils.confdPort(api_server) + '/api/operations/change-password',
116 method: 'POST',
117 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
118 'Authorization': req.session && req.session.authorization
119 }),
120 forever: constants.FOREVER_ON,
121 json: {
122 "input": {
123 'user-name' : bodyData['user-name'],
124 'user-domain' : bodyData['user-domain'],
125 'old-password' : bodyData['old-password'],
126 'new-password' : bodyData['new-password'],
127 'confirm-password' : bodyData['confirm-password'],
128 }
129 },
130 rejectUnauthorized: false,
131 resolveWithFullResponse: true
132 });
133 updateTasks.push(changePW);
134 };
135 var updateUser = rp({
136 uri: utils.confdPort(api_server) + '/api/config/user-config',
137 method: 'PUT',
138 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
139 'Authorization': req.session && req.session.authorization
140 }),
141 forever: constants.FOREVER_ON,
142 json: data,
143 rejectUnauthorized: false,
144 resolveWithFullResponse: true
145 });
146 updateTasks.push(updateUser)
147 return new Promise(function(resolve, reject) {
148 Promise.all([
149 updateTasks
150 ]).then(function(result) {
151 var response = {};
152 response['data'] = {};
153 if (result[0].body) {
154 response['data'] = result[0].body;
155 }
156 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
157
158 resolve(response);
159 }).catch(function(error) {
160 var response = {};
161 console.log('Problem with UserManagement.passwordChange', error);
162 response.statusCode = error.statusCode || 500;
163 response.errorMessage = {
164 error: 'Failed to passwordChange user' + error
165 };
166 reject(response);
167 });
168 });
169 };
170
171 UserManagement.delete = function(req) {
172 var self = this;
173 var username = req.params.username;
174 var domain = req.params.domain;
175 var api_server = req.query["api_server"];
176 var requestHeaders = {};
177 var url = `${utils.confdPort(api_server)}/api/config/user-config/users/${username},${domain}`
178 return new Promise(function(resolve, reject) {
179 _.extend(requestHeaders,
180 constants.HTTP_HEADERS.accept.data,
181 constants.HTTP_HEADERS.content_type.data, {
182 'Authorization': req.session && req.session.authorization
183 });
184 rp({
185 url: url,
186 method: 'DELETE',
187 headers: requestHeaders,
188 forever: constants.FOREVER_ON,
189 rejectUnauthorized: false,
190 }, function(error, response, body) {
191 if (utils.validateResponse('UserManagement.DELETE', error, response, body, resolve, reject)) {
192 return resolve({
193 statusCode: response.statusCode,
194 data: JSON.stringify(response.body)
195 });
196 };
197 });
198 })
199 }
200 module.exports = UserManagement;