Как изменить/добавить переменную добавления в json службы после успешной регистрации.json?


Я могу получить ответ после регистрации с помощью сервиса register.json

Ответ:

    {
        "uid": "10",
        "uri": "http://example.com/apps_api/user/10"
    } 

Ввод:

{"имя": "умный", "пропуск": "умный", "почта":"[email protected] ", "статус": "1", "роли":[ "3" ] }

Я получаю всю информацию "uri": "http://example.com/apps_api/user/10". Я просто хочу получить в ответ "имя", "почта", "роль".

Не нужно идти снова "uri": "http://example.com/apps_api/user/10".

Author: DRUPWAY, 2016-01-12

2 answers

Добавьте пользовательский код/модуль для изменения ответа службы, проверьте hook_services_endpoint_response_alter и все другие подобные крючки изменения службы изменяют крючки

Например:

function MODULENAME_services_request_postprocess_alter($controller, $args, &$result) {
  if ($controller->callback == '_user_resource_create') {
    if ($result->uid) {
      $user = user_load($result->uid);
      $result->user = $user;
    }
  }
}
 1
Author: nikunj, 2016-01-12 15:07:07

Я так и не смог вернуть исходный текстовый пароль без взлома самих модулей logintoboggan/user (аналогично тому, что показано в моем вопросе).

Тем не менее, я решил ту же задачу - обеспечить немедленный вход при регистрации для вызовов служб/API с помощью модуля services_token_access. Этот код привязывается только к успешной регистрации, а затем объявляет о том, что services_token отвечает на ответ, который теперь является единственным, что сейчас нужно моему клиенту утверждение.

function HOOK_services_request_postprocess_alter($controller, $args, &$result) {

if ( gettype($result) == 'array' && isset($result['uri']) && isset($result['uid'])) { // THIS CONDITION MATCHES THE DEFAULT RESPONSE OF A SUCCESSFUL REGISTRATION. 
        $user = (object)$result;
        $user = user_load($user->uid);
        $user = HOOK_services_account_object_alter($user);
        $result = array('token'=>$user->services_token, 'user'=>$user);
    }
}


function HOOK_services_account_object_alter(&$user) {
    $user->services_token = services_token_access_update_token($user->uid, FALSE); // essential for logging in later
    $user->specialstuff = 'whatever else you need';
}

(Модуль services_token_access не особенно популярен и едва поддерживается, но работал для меня.)

 1
Author: DRUPWAY, 2018-02-08 05:46:11