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
*/