2 Copyright 2018 EveryUP srl
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
8 http://www.apache.org/licenses/LICENSE-2.0
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.
17 function openModalCreateUser(args
) {
19 var dialog
= bootbox
.dialog({
20 message
: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
24 url
: args
.domains_list_url
,
26 contentType
: "application/json;charset=utf-8",
27 success: function (result_domain
) {
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
})
39 if (domains_list
.length
== 0) {
40 $('#domainNameGroupDiv').remove();
43 select2_groups
= $('#projects').select2({
44 placeholder
: 'Select Projects',
47 url
: args
.projects_list_url
,
49 processResults: function (data
) {
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'] })
64 select2_groups
= $('#domain_name').select2({
65 placeholder
: 'Select Domain',
68 "noResults": function () {
69 return "No domains in the platform";
75 $('#modal_new_user').modal('show');
78 error: function (result
) {
80 bootbox
.alert("An error occurred.");
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');
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');
112 $('#modal_edit_user_credentials').modal('show');
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>',
122 url
: '/admin/users/' + user_id
+ '/info',
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');
130 error: function (result
) {
131 dialog
.modal('hide');
132 bootbox
.alert("An error occurred.");
138 function resetMapGroup(args
) {
139 var $formGroup
= $('#modal_edit_proj_role_map_body');
141 $formGroup
.append('<div class="proj-role-map-group-head">' +
143 '<button type="button" class="btn btn-success btn-add btn-sm">+</button>' +
145 if (args
['project_role_mappings'] && args
['project_role_mappings'].length
> 0) {
147 for (i
= 0; i
< args
['project_role_mappings'].length
; ++i
) {
148 var mapping
= args
['project_role_mappings'][i
];
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>' +
157 '<button type="button" class="btn btn-danger btn-remove btn-sm">-</button></div></div>');
166 var addMapGroup = function (event
) {
167 event
.preventDefault();
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>' +
177 '<button type="button" class="btn btn-danger btn-remove btn-sm">-</button></div></div>');
181 var removeMapGroup = function (event
) {
182 event
.preventDefault();
183 var $formGroup
= $(this).closest('.proj-role-map-group');
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
) {
191 var dialog
= bootbox
.dialog({
192 message
: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
198 contentType
: "application/json;charset=utf-8",
199 success: function (result
) {
200 dialog
.modal('hide');
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.';
219 function validatePswOnCreate() {
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("");
228 $("#pwmatch").removeClass("glyphicon-ok");
229 $("#pwmatch").addClass("glyphicon-remove");
230 $("#pwmatch").css("color", "#FF0004");
231 confirm_password
.setCustomValidity("Passwords Don't Match");
235 function validatePswOnEdit() {
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("");
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");
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
259 type
: request_method
,
262 "Accept": 'application/json'
266 }).done(function (response
, textStatus
, jqXHR
) {
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.';