Merge pull request #1413 from gaincoder/fixDeleteUser
fix User cannot be deleted #1407
This commit is contained in:
commit
9e07add22d
4 changed files with 124 additions and 1 deletions
|
@ -224,6 +224,77 @@
|
|||
});
|
||||
});
|
||||
|
||||
$('#btnDeleteUserAndKeepContent').on('click', function() {
|
||||
var username = $('#username').val();
|
||||
logs('Deleting user. Username: ' + username);
|
||||
bootbox.confirm({
|
||||
message: '<?php $L->p('Are you sure you want to delete this user') ?>',
|
||||
buttons: {
|
||||
cancel: {
|
||||
label: '<i class="fa fa-times"></i><?php $L->p('Cancel') ?>',
|
||||
className: 'btn-sm btn-secondary'
|
||||
},
|
||||
confirm: {
|
||||
label: '<i class="fa fa-check"></i><?php $L->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: '<?php $L->p('Are you sure you want to delete this user') ?>',
|
||||
buttons: {
|
||||
cancel: {
|
||||
label: '<i class="fa fa-times"></i><?php $L->p('Cancel') ?>',
|
||||
className: 'btn-sm btn-secondary'
|
||||
},
|
||||
confirm: {
|
||||
label: '<i class="fa fa-check"></i><?php $L->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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// ============================================================================
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue