var current_users_list = []; function add_user() { url = 'users/add/modal' + case_param(); $('#modal_access_control').load(url, function (response, status, xhr) { if (status !== "success") { ajax_notify_error(xhr, url); return false; } $('#submit_new_user').on("click", function () { var data_sent = $('#form_new_user').serializeObject() clear_api_error(); post_request_api('users/add', JSON.stringify(data_sent), true) .done((data) => { if(notify_auto_api(data)) { refresh_users(); $('#modal_access_control').modal('hide'); } }); return false; }) }); $('#modal_access_control').modal({ show: true }); } manage_users_table = $('#users_table').dataTable( { "order": [[ 1, "asc" ]], "autoWidth": false, "language": { "emptyTable": "Loading users..." }, "columns": [ { "data": "user_id", "render": function ( data, type, row ) { if (type === 'display') { data = sanitizeHTML(data) return '' + data +''; } return data; } }, { "data": "user_name", "render": function ( data, type, row ) { if (type === 'display') { data = sanitizeHTML(data) return '' + data +''; } return data; } }, { "data": "user_login", "render": function (data, type, row, meta) { if (type === 'display') { data = sanitizeHTML(data);} return data; } }, { "data": "user_email", "render": function (data, type, row, meta) { if (type === 'display') { data = sanitizeHTML(data);} return data; } }, { "data": "user_active", "render": function (data, type, row, meta) { if (type === 'display') { if (data == true) { data = 'Active'; } else { data = 'Disabled'; } } return data; } }, { "data": "user_is_service_account", "render": function (data, type, row, meta) { if (type === 'display') { if (data == true) { data = ''; } else { data = ''; } } return data; } } ] } ); function refresh_users(do_notify) { get_request_api('users/list') .done((data) => { if(notify_auto_api(data, true)) { current_users_list = data.data; manage_users_table.api().clear().rows.add(data.data).draw(); if (do_notify !== undefined) { notify_success("Refreshed"); } } }); } /* Fetch the details of an user and allow modification */ function user_detail(user_id, goto_tab) { url = 'users/' + user_id + '/modal' + case_param(); $('#modal_access_control').load(url, function (response, status, xhr) { if (status !== "success") { ajax_notify_error(xhr, url); return false; } $('#submit_new_user').on("click", function () { clear_api_error(); var data_sent = $('#form_new_user').serializeObject(); post_request_api('/manage/users/update/' + user_id, JSON.stringify(data_sent), true) .done((data) => { if(notify_auto_api(data)) { refresh_users(); $('#modal_access_control').modal('hide'); } }); return false; }) if (goto_tab !== undefined) { $('.nav-pills a[href="#'+ goto_tab +'"]').tab('show'); } $('#modal_access_control').modal({ show: true }); }); } function refresh_user_ac(user_id) { var ori_txt = $('#users_refresh_ac_btn').text(); $('#users_refresh_ac_btn').text('Refreshing..'); get_request_api('/manage/access-control/recompute-effective-user-ac/' + user_id) .done((data) => { notify_auto_api(data); }).always(() => { $('#users_refresh_ac_btn').text(ori_txt); }); } function delete_user(id) { swal({ title: "Are you sure?", text: "You won't be able to revert this !", icon: "warning", buttons: true, dangerMode: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, delete it!' }) .then((willDelete) => { if (willDelete) { var data_sent = { 'csrf_token': $('#csrf_token').val() } post_request_api('/manage/users/delete/' + id, JSON.stringify(data_sent)) .done((data) => { if(notify_auto_api(data)) { refresh_users(); $('#modal_access_control').modal('hide'); } }); } else { swal("Pfew, that was close"); } }); } function activate_user(user_id) { get_request_api('/manage/users/activate/' + user_id) .done((data) => { if(notify_auto_api(data)) { user_detail(user_id); refresh_users(); } }); } function deactivate_user(user_id) { get_request_api('/manage/users/deactivate/' + user_id) .done((data) => { if(notify_auto_api(data)) { user_detail(user_id); refresh_users(); } }); } function remove_member_from_org_wrap(org_id, user_id) { remove_members_from_org(org_id, user_id, function() { user_detail(user_id, 'user_orgs_tab'); }); } function remove_member_from_group_wrap(group_id, user_id) { remove_members_from_group(group_id, user_id, function() { user_detail(user_id, 'user_groups_tab'); }); } function manage_user_groups(user_id) { url = 'users/' + user_id + '/groups/modal' + case_param(); $('#modal_ac_additional').load(url, function (response, status, xhr) { if (status !== "success") { ajax_notify_error(xhr, url); return false; } $('#modal_ac_additional').modal({ show: true }); $('#save_user_groups_membership').on("click", function () { clear_api_error(); var data_sent = Object(); data_sent['groups_membership'] = $('#user_groups_membership').val(); data_sent['csrf_token'] = $('#csrf_token').val(); post_request_api('/manage/users/' + user_id + '/groups/update', JSON.stringify(data_sent)) .done((data) => { if(notify_auto_api(data)) { refresh_groups(); user_detail(user_id, 'user_groups_tab'); } }); }); }); } function manage_user_organisations(user_id) { url = 'users/' + user_id + '/organisations/modal' + case_param(); $('#modal_ac_additional').load(url, function (response, status, xhr) { if (status !== "success") { ajax_notify_error(xhr, url); return false; } $('#modal_ac_additional').modal({ show: true }); $('#save_user_orgs_membership').on("click", function () { clear_api_error(); var data_sent = Object(); data_sent['orgs_membership'] = $('#user_orgs_membership').val(); data_sent['csrf_token'] = $('#csrf_token').val(); post_request_api('/manage/users/' + user_id + '/organisations/update', JSON.stringify(data_sent)) .done((data) => { if(notify_auto_api(data)) { user_detail(user_id, 'user_orgs_tab'); } }); }); }); } function refresh_user_cac(user_id) { if (modal_user_cac_table !== undefined) { get_request_api('/manage/users/' + user_id) .done((data) => { if(notify_auto_api(data)) { current_user_cases_access_list = data.data.user_cases_access; modal_user_cac_table.clear(); modal_user_cac_table.rows.add(current_user_cases_access_list).draw(); } }); } } function manage_user_cac(user_id) { url = 'users/' + user_id + '/cases-access/modal' + case_param(); $('#manage_user_cac_button').text('Loading manager...'); $('#modal_ac_additional').load(url, function (response, status, xhr) { $('#manage_user_cac_button').text('Set case access'); if (status !== "success") { ajax_notify_error(xhr, url); return false; } $('#grant_case_access_to_user').on("click", function () { clear_api_error(); var data_sent = Object(); data_sent['cases_list'] = $('#user_case_access_select').val(); data_sent['access_level'] = parseInt($('#user_case_ac_select').val()); data_sent['csrf_token'] = $('#csrf_token').val(); post_request_api('users/' + user_id + '/cases-access/update', JSON.stringify(data_sent)) .done((data) => { if(notify_auto_api(data)) { refresh_user_cac(user_id); $('#modal_ac_additional').modal('hide'); } }); return false; }); $('#modal_ac_additional').modal({ show: true }); }); } function remove_cases_access_from_user_table(org_id, rows) { cases = []; for (cid in rows) { cases.push(rows[cid].case_id); } remove_cases_access_user(org_id, cases); } $(document).ready(function () { refresh_users(); });