Это мое решение ... может быть, не самое лучшее, но, похоже, оно работает.
Я добавил delete_users и remove_users возможности для роли подписчика.(для моего удобства).
Проверка конечной точки отдыха My / DeleteUsers для идентификатора пользователя, зашифрованного в маркере JWT, отправляемом в заголовке, и сравнение его с параметрами user_id.Если они совпадают, я могу удалить пользователя.
Теперь мне просто нужно избегать того, чтобы пользователь мог получить доступ к панели администратора WP и напутать!
Это код:
function myDeleteProfile($data) {
require_once(ABSPATH.'wp-admin/includes/user.php');
$headers = getallheaders();
if(!isset($headers['Authorization']) || !$headers['Authorization']) {
return array('esito'=>'ko', 'descrizione'=>'Fail message!');
}
$jwt_parts = preg_split('/\./', $headers['Authorization']);
$jwt_decoded = json_decode(base64_decode($jwt_parts[1]));
$jwt_user = $jwt_decoded->data->user->id;
if( intval($data['user_id']) != intval($jwt_user) ) {
return array('esito'=>'ko', 'descrizione'=>'User cannot delete.');
}
else {
if( wp_delete_user($jwt_user,null) ){
return array('esito'=>'ok', 'descrizione'=>'Deleting...');
}
else {
return array('esito'=>'ko', 'descrizione'=>'Error.');
}
}
}