X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=static%2Fsrc%2Fuserhandler%2Fuser_list.js;h=b3d8250f69ee84a9ac5b079e463ce27e2b5c31fd;hb=refs%2Fchanges%2F44%2F8844%2F4;hp=196b8788992491fd87c56b29b49d6a5226b40564;hpb=10b52d1480ad41e7a1d51575f1e5f4ea762b2dd6;p=osm%2FLW-UI.git diff --git a/static/src/userhandler/user_list.js b/static/src/userhandler/user_list.js index 196b878..b3d8250 100644 --- a/static/src/userhandler/user_list.js +++ b/static/src/userhandler/user_list.js @@ -1,35 +1,192 @@ +/* + Copyright 2018 EveryUP srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + function openModalCreateUser(args) { - console.log(args) - // load projects list - select2_groups = $('#projects').select2({ - placeholder: 'Select Projects', - width: '100%', - ajax: { - url: args.projects_list_url, - dataType: 'json', - processResults: function (data) { - projects = []; - if (data['projects']) { - for (d in data['projects']) { - var project = data['projects'][d]; - projects.push({id: project['_id'], text: project['name']}) + + var dialog = bootbox.dialog({ + message: '
Loading...
', + closeButton: false + }); + $.ajax({ + url: args.domains_list_url, + dataType: "json", + contentType: "application/json;charset=utf-8", + success: function (result_domain) { + domains_list = []; + $('#domain_name').prop('disabled', false).trigger('change'); + if (result_domain['domains']) { + for (d in result_domain['domains']) { + var domain = result_domain['domains'][d]; + if (domain.endsWith(':ro') === false) { + domains_list.push({ id: domain, text: domain }) } - } - return { - results: projects - }; + } + } + if (domains_list.length == 0) { + $('#domainNameGroupDiv').remove(); } + dialog.modal('hide'); + select2_groups = $('#projects').select2({ + placeholder: 'Select Projects', + width: '100%', + ajax: { + url: args.projects_list_url, + dataType: 'json', + processResults: function (data) { + projects = []; + if (data['projects']) { + for (d in data['projects']) { + var project = data['projects'][d]; + projects.push({ id: project['_id'], text: project['name'] }) + } + } + + return { + results: projects + }; + } + } + }); + select2_groups = $('#domain_name').select2({ + placeholder: 'Select Domain', + width: '100%', + "language": { + "noResults": function () { + return "No domains in the platform"; + } + }, + data: domains_list + }); + + $('#modal_new_user').modal('show'); + + }, + error: function (result) { + dialog.modal('hide'); + bootbox.alert("An error occurred."); } }); +} + +function openModalEditUserCredentials(args) { + var url = '/admin/users/' + args.user_id; + var user_projects = args.projects ? args.projects.split(',') : []; + $("#formEditUser").attr("action", url); + $("#projects_old").val(user_projects.toString()); + $('#projects_edit').val(null).trigger('change'); + $('#default_project_edit').val(null).trigger('change'); + $('#edit_password').val(''); + if (user_projects.length > 0) { + // Create a DOM Option and pre-select by default + var newOption = new Option(user_projects[0], user_projects[0], true, true); + // Append it to the select + $('#default_project_edit').append(newOption).trigger('change'); + + for (var d in user_projects) { + var project = user_projects[d]; + // Create a DOM Option and pre-select by default + var newOption = new Option(project, project, true, true); + // Append it to the select + $('#projects_edit').append(newOption).trigger('change'); + } + + } - $('#modal_new_user').modal('show'); + + $('#modal_edit_user_credentials').modal('show'); } -function deleteUser(delete_url) { - bootbox.confirm("Are you sure want to delete?", function (confirm) { +function openModalEditUserRoleMap(user_id) { + $("#formEditUserRoleMap").attr("action", '/admin/users/' + user_id); + var dialog = bootbox.dialog({ + message: '
Loading...
', + closeButton: false + }); + $.ajax({ + url: '/admin/users/' + user_id + '/info', + dataType: "json", + contentType: "application/json;charset=utf-8", + success: function (result) { + dialog.modal('hide'); + resetMapGroup(result); + $('#modal_edit_user_role_map').modal('show'); + }, + error: function (result) { + dialog.modal('hide'); + bootbox.alert("An error occurred."); + } + }); + +} + +function resetMapGroup(args) { + var $formGroup = $('#modal_edit_proj_role_map_body'); + $formGroup.empty(); + $formGroup.append('
' + + + '' + + '

'); + if (args['project_role_mappings'] && args['project_role_mappings'].length > 0) { + + for (i = 0; i < args['project_role_mappings'].length; ++i) { + var mapping = args['project_role_mappings'][i]; + + $formGroup.append('
' + + '
' + + '
' + + '' + + '
' + + '' + + '
' + + '
'); + } + } + + + + +} + +var addMapGroup = function (event) { + event.preventDefault(); + + var $formGroup = $('#modal_edit_proj_role_map_body'); + $formGroup.append('
' + + '
' + + '
' + + '' + + '
' + + '' + + '
' + + '
'); + +}; + +var removeMapGroup = function (event) { + event.preventDefault(); + var $formGroup = $(this).closest('.proj-role-map-group'); + $formGroup.remove(); +}; + +function deleteUser(user_id, name) { + var delete_url = '/admin/users/' + user_id + '/delete'; + bootbox.confirm("Are you sure want to delete " + name + "?", function (confirm) { if (confirm) { var dialog = bootbox.dialog({ message: '
Loading...
', @@ -40,16 +197,84 @@ function deleteUser(delete_url) { dataType: "json", contentType: "application/json;charset=utf-8", success: function (result) { - //$('#modal_show_vim_body').empty(); dialog.modal('hide'); - location.reload(); + table.ajax.reload(); }, error: function (result) { dialog.modal('hide'); - bootbox.alert("An error occurred."); + var data = result.responseJSON; + var title = "Error " + (data && data.code ? data.code : 'unknown'); + var message = data && data.detail ? data.detail : 'No detail available.'; + bootbox.alert({ + title: title, + message: message + }); } }); } }) -} \ No newline at end of file +} + +function validatePswOnCreate() { + + var confirm_password = document.getElementById("password2"); + if ($("#password").val() == $("#password2").val()) { + $("#pwmatch").removeClass("glyphicon-remove"); + $("#pwmatch").addClass("glyphicon-ok"); + $("#pwmatch").css("color", "#00A41E"); + confirm_password.setCustomValidity(""); + } else { + $("#pwmatch").removeClass("glyphicon-ok"); + $("#pwmatch").addClass("glyphicon-remove"); + $("#pwmatch").css("color", "#FF0004"); + confirm_password.setCustomValidity("Passwords Don't Match"); + } +} + +function validatePswOnEdit() { + + var confirm_password = document.getElementById("edit_password2"); + if ($("#edit_password").val() == $("#edit_password2").val()) { + $("#pwmatch_edit").removeClass("glyphicon-remove"); + $("#pwmatch_edit").addClass("glyphicon-ok"); + $("#pwmatch_edit").css("color", "#00A41E"); + confirm_password.setCustomValidity(""); + } else { + $("#pwmatch_edit").removeClass("glyphicon-ok"); + $("#pwmatch_edit").addClass("glyphicon-remove"); + $("#pwmatch_edit").css("color", "#FF0004"); + confirm_password.setCustomValidity("Passwords Don't Match"); + } +} + +$(document).ready(function () { + $("#formEditUserRoleMap").submit(function (event) { + event.preventDefault(); //prevent default action + var post_url = $(this).attr("action"); //get form action url + var request_method = $(this).attr("method"); //get form GET/POST method + var form_data = new FormData(this); //Encode form elements for submission + $.ajax({ + url: post_url, + type: request_method, + data: form_data, + headers: { + "Accept": 'application/json' + }, + contentType: false, + processData: false + }).done(function (response, textStatus, jqXHR) { + table.ajax.reload(); + $('#modal_edit_user_role_map').modal('hide'); + }).fail(function (result) { + var data = result.responseJSON; + var title = "Error " + (data.code ? data.code : 'unknown'); + var message = data.detail ? data.detail : 'No detail available.'; + bootbox.alert({ + title: title, + message: message + }); + }); + }); + +}) \ No newline at end of file