fix: removed domain_name as required input when there is no domain costraints
[osm/LW-UI.git] / static / src / userhandler / user_list.js
1 /*
2 Copyright 2018 EveryUP srl
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15 */
16
17 function openModalCreateUser(args) {
18
19 var dialog = bootbox.dialog({
20 message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
21 closeButton: false
22 });
23 $.ajax({
24 url: args.domains_list_url,
25 dataType: "json",
26 contentType: "application/json;charset=utf-8",
27 success: function (result_domain) {
28 domains_list = [];
29 $('#domain_name').prop('disabled', false).trigger('change');
30 if (result_domain['domains']) {
31 for (d in result_domain['domains']) {
32 var domain = result_domain['domains'][d];
33 if (domain.endsWith(':ro') === false) {
34 domains_list.push({ id: domain, text: domain })
35 }
36
37 }
38 }
39 if (domains_list.length == 0) {
40 $('#domainNameGroupDiv').remove();
41 }
42 dialog.modal('hide');
43 select2_groups = $('#projects').select2({
44 placeholder: 'Select Projects',
45 width: '100%',
46 ajax: {
47 url: args.projects_list_url,
48 dataType: 'json',
49 processResults: function (data) {
50 projects = [];
51 if (data['projects']) {
52 for (d in data['projects']) {
53 var project = data['projects'][d];
54 projects.push({ id: project['_id'], text: project['name'] })
55 }
56 }
57
58 return {
59 results: projects
60 };
61 }
62 }
63 });
64 select2_groups = $('#domain_name').select2({
65 placeholder: 'Select Domain',
66 width: '100%',
67 "language": {
68 "noResults": function () {
69 return "No domains in the platform";
70 }
71 },
72 data: domains_list
73 });
74
75 $('#modal_new_user').modal('show');
76
77 },
78 error: function (result) {
79 dialog.modal('hide');
80 bootbox.alert("An error occurred.");
81 }
82 });
83
84
85 }
86
87 function openModalEditUserCredentials(args) {
88 var url = '/admin/users/' + args.user_id;
89 var user_projects = args.projects ? args.projects.split(',') : [];
90 $("#formEditUser").attr("action", url);
91 $("#projects_old").val(user_projects.toString());
92 $('#projects_edit').val(null).trigger('change');
93 $('#default_project_edit').val(null).trigger('change');
94 $('#edit_password').val('');
95 if (user_projects.length > 0) {
96 // Create a DOM Option and pre-select by default
97 var newOption = new Option(user_projects[0], user_projects[0], true, true);
98 // Append it to the select
99 $('#default_project_edit').append(newOption).trigger('change');
100
101 for (var d in user_projects) {
102 var project = user_projects[d];
103 // Create a DOM Option and pre-select by default
104 var newOption = new Option(project, project, true, true);
105 // Append it to the select
106 $('#projects_edit').append(newOption).trigger('change');
107 }
108
109 }
110
111
112 $('#modal_edit_user_credentials').modal('show');
113 }
114
115 function openModalEditUserRoleMap(user_id) {
116 $("#formEditUserRoleMap").attr("action", '/admin/users/' + user_id);
117 var dialog = bootbox.dialog({
118 message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
119 closeButton: false
120 });
121 $.ajax({
122 url: '/admin/users/' + user_id + '/info',
123 dataType: "json",
124 contentType: "application/json;charset=utf-8",
125 success: function (result) {
126 dialog.modal('hide');
127 resetMapGroup(result);
128 $('#modal_edit_user_role_map').modal('show');
129 },
130 error: function (result) {
131 dialog.modal('hide');
132 bootbox.alert("An error occurred.");
133 }
134 });
135
136 }
137
138 function resetMapGroup(args) {
139 var $formGroup = $('#modal_edit_proj_role_map_body');
140 $formGroup.empty();
141 $formGroup.append('<div class="proj-role-map-group-head">' +
142
143 '<button type="button" class="btn btn-success btn-add btn-sm">+</button>' +
144 '</div></br>');
145 if (args['project_role_mappings'] && args['project_role_mappings'].length > 0) {
146
147 for (i = 0; i < args['project_role_mappings'].length; ++i) {
148 var mapping = args['project_role_mappings'][i];
149
150 $formGroup.append('<div class="proj-role-map-group"> <div class="form-group">' +
151 '<label class="col-sm-2">Project* </label><div class="col-sm-3">' +
152 '<input name="map_project_name" value="' + mapping.project_name + '" class="form-control input-sm" required></div>' +
153 '<label class="col-sm-2">Role* </label>' +
154 '<div class="col-sm-3">' +
155 '<input name="map_role_name" value="' + mapping.role_name + '" class="form-control input-sm" required>' +
156 '</div>' +
157 '<button type="button" class="btn btn-danger btn-remove btn-sm">-</button></div></div>');
158 }
159 }
160
161
162
163
164 }
165
166 var addMapGroup = function (event) {
167 event.preventDefault();
168
169 var $formGroup = $('#modal_edit_proj_role_map_body');
170 $formGroup.append('<div class="proj-role-map-group"> <div class="form-group">' +
171 '<label class="col-sm-2">Project* </label><div class="col-sm-3">' +
172 '<input name="map_project_name" class="form-control input-sm" required></div>' +
173 '<label class="col-sm-2">Role* </label>' +
174 '<div class="col-sm-3">' +
175 '<input name="map_role_name" class="form-control input-sm" required>' +
176 '</div>' +
177 '<button type="button" class="btn btn-danger btn-remove btn-sm">-</button></div></div>');
178
179 };
180
181 var removeMapGroup = function (event) {
182 event.preventDefault();
183 var $formGroup = $(this).closest('.proj-role-map-group');
184 $formGroup.remove();
185 };
186
187 function deleteUser(user_id, name) {
188 var delete_url = '/admin/users/' + user_id + '/delete';
189 bootbox.confirm("Are you sure want to delete " + name + "?", function (confirm) {
190 if (confirm) {
191 var dialog = bootbox.dialog({
192 message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
193 closeButton: false
194 });
195 $.ajax({
196 url: delete_url,
197 dataType: "json",
198 contentType: "application/json;charset=utf-8",
199 success: function (result) {
200 dialog.modal('hide');
201 table.ajax.reload();
202 },
203 error: function (result) {
204 dialog.modal('hide');
205 var data = result.responseJSON;
206 var title = "Error " + (data && data.code ? data.code : 'unknown');
207 var message = data && data.detail ? data.detail : 'No detail available.';
208 bootbox.alert({
209 title: title,
210 message: message
211 });
212 }
213 });
214 }
215 })
216
217 }
218
219 function validatePswOnCreate() {
220
221 var confirm_password = document.getElementById("password2");
222 if ($("#password").val() == $("#password2").val()) {
223 $("#pwmatch").removeClass("glyphicon-remove");
224 $("#pwmatch").addClass("glyphicon-ok");
225 $("#pwmatch").css("color", "#00A41E");
226 confirm_password.setCustomValidity("");
227 } else {
228 $("#pwmatch").removeClass("glyphicon-ok");
229 $("#pwmatch").addClass("glyphicon-remove");
230 $("#pwmatch").css("color", "#FF0004");
231 confirm_password.setCustomValidity("Passwords Don't Match");
232 }
233 }
234
235 function validatePswOnEdit() {
236
237 var confirm_password = document.getElementById("edit_password2");
238 if ($("#edit_password").val() == $("#edit_password2").val()) {
239 $("#pwmatch_edit").removeClass("glyphicon-remove");
240 $("#pwmatch_edit").addClass("glyphicon-ok");
241 $("#pwmatch_edit").css("color", "#00A41E");
242 confirm_password.setCustomValidity("");
243 } else {
244 $("#pwmatch_edit").removeClass("glyphicon-ok");
245 $("#pwmatch_edit").addClass("glyphicon-remove");
246 $("#pwmatch_edit").css("color", "#FF0004");
247 confirm_password.setCustomValidity("Passwords Don't Match");
248 }
249 }
250
251 $(document).ready(function () {
252 $("#formEditUserRoleMap").submit(function (event) {
253 event.preventDefault(); //prevent default action
254 var post_url = $(this).attr("action"); //get form action url
255 var request_method = $(this).attr("method"); //get form GET/POST method
256 var form_data = new FormData(this); //Encode form elements for submission
257 $.ajax({
258 url: post_url,
259 type: request_method,
260 data: form_data,
261 headers: {
262 "Accept": 'application/json'
263 },
264 contentType: false,
265 processData: false
266 }).done(function (response, textStatus, jqXHR) {
267 table.ajax.reload();
268 $('#modal_edit_user_role_map').modal('hide');
269 }).fail(function (result) {
270 var data = result.responseJSON;
271 var title = "Error " + (data.code ? data.code : 'unknown');
272 var message = data.detail ? data.detail : 'No detail available.';
273 bootbox.alert({
274 title: title,
275 message: message
276 });
277 });
278 });
279
280 })