diff --git a/bl-kernel/admin/views/edit-user.php b/bl-kernel/admin/views/edit-user.php index 9a94a577..185e0c17 100644 --- a/bl-kernel/admin/views/edit-user.php +++ b/bl-kernel/admin/views/edit-user.php @@ -224,6 +224,77 @@ }); }); + $('#btnDeleteUserAndKeepContent').on('click', function() { + var username = $('#username').val(); + logs('Deleting user. Username: ' + username); + bootbox.confirm({ + message: 'p('Are you sure you want to delete this user') ?>', + buttons: { + cancel: { + label: 'p('Cancel') ?>', + className: 'btn-sm btn-secondary' + }, + confirm: { + label: 'p('Confirm') ?>', + className: 'btn-sm btn-primary' + } + }, + closeButton: false, + callback: function(result) { + if (result) { + var args = { + username: $('#username').val() + }; + api.deleteUser(args).then(function(response) { + if (response.status == 0) { + logs('User deleted. Username: ' + response.data.key); + window.location.replace(HTML_PATH_ADMIN_ROOT + 'users'); + } else { + logs("An error occurred while trying to disable the user."); + showAlertError(response.message); + } + }); + } + } + }); + }); + + $('#btnDeleteUserAndContent').on('click', function() { + var username = $('#username').val(); + logs('Deleting user and content. Username: ' + username); + bootbox.confirm({ + message: 'p('Are you sure you want to delete this user') ?>', + buttons: { + cancel: { + label: 'p('Cancel') ?>', + className: 'btn-sm btn-secondary' + }, + confirm: { + label: 'p('Confirm') ?>', + className: 'btn-sm btn-primary' + } + }, + closeButton: false, + callback: function(result) { + if (result) { + var args = { + username: $('#username').val(), + deleteContent: true + }; + api.deleteUser(args).then(function(response) { + if (response.status == 0) { + logs('User and content deleted. Username: ' + response.data.key); + window.location.replace(HTML_PATH_ADMIN_ROOT + 'users'); + } else { + logs("An error occurred while trying to disable the user."); + showAlertError(response.message); + } + }); + } + } + }); + }); + }); // ============================================================================ diff --git a/bl-kernel/functions.php b/bl-kernel/functions.php index 229e8591..6e2b2610 100644 --- a/bl-kernel/functions.php +++ b/bl-kernel/functions.php @@ -967,7 +967,7 @@ function deleteUser($args) { $deleteContent = isset($args['deleteContent']) ? $args['deleteContent'] : false; // Only administrators can delete users - if ($login->role()!=='admin') { + if (Session::get('role')!=='admin') { return false; } diff --git a/bl-kernel/js/api.js b/bl-kernel/js/api.js index 595317e3..e92db1e2 100644 --- a/bl-kernel/js/api.js +++ b/bl-kernel/js/api.js @@ -377,6 +377,32 @@ class API { } } + /* Delete user + @args array Arguments can be any of the fields from an user + @return string The username + */ + async deleteUser(args) { + var url = this.apiURL + "users/" + args['username']; + var body = Object.assign({}, this.body, args); + try { + var response = await fetch(url, { + credentials: "same-origin", + method: "DELETE", + body: JSON.stringify(body), + headers: new Headers({ + "Content-Type": "application/json" + }) + }); + var json = await response.json(); + return json; + } catch (err) { + console.log(response); + console.log(err); + return {'message': 'Error from API. Open the inspector from the browser for more details.'}; + } + } + + /* Install and activate a plugin === Bludit v4 @args array diff --git a/bl-plugins/api/plugin.php b/bl-plugins/api/plugin.php index 88ef16ce..f714efce 100644 --- a/bl-plugins/api/plugin.php +++ b/bl-plugins/api/plugin.php @@ -261,6 +261,11 @@ class pluginAPI extends Plugin { elseif ( ($method==='POST') && ($parmA==='users') && empty($parmB) && $writePermissions ) { $data = $this->createUser($inputs); } + // (DELETE) /api/users/:key + elseif ( ($method==='DELETE') && ($parmA==='users') && !empty($parmB) && $writePermissions ) { + $inputs['key'] = $parmB; + $data = $this->deleteUser($inputs); + } // (POST) /api/users/picture/:username elseif ( ($method==='POST') && ($parmA==='users') && ($parmB==='picture') && !empty($parmC) && $writePermissions ) { $username = $parmC; @@ -815,6 +820,27 @@ class pluginAPI extends Plugin { ); } + + /* Delete user === Bludit v4 + Referer to the function deleteUser() from functions.php + */ + private function deleteUser($args) + { + $key = deleteUser($args); + if ($key===false) { + return array( + 'status'=>'1', + 'message'=>'An error occurred while trying to delete the user.' + ); + } + + return array( + 'status'=>'0', + 'message'=>'User deleted.', + 'data'=>array('key'=>$key) + ); + } + /* Upload a profile picture === Bludit v4 Referer to the function uploadProfilePicture() from functions.php */