Как изменить ответ JSON при аутентификации JWT для WP-API?

Я использовал плагин «JWT Authentication for WP-API» для входа в систему и создания токена.

В ответе JSON у меня есть только некоторые данные из таблицы wp_users.

Как я могу изменить его так, чтобы он принимал другие значения из таблицы wp_usermeta при ответе, потому что я хочу знать уровень статуса пользователя.


person user10539558    schedule 03.05.2019    source источник


Ответы (1)


Вам нужно использовать фильтры jwt_auth_token_before_sign или jwt_auth_token_before_dispatch.

Первый фильтр получает данные токена и пользовательский объект.

В другом плагине или в вашей теме вам нужно будет вызвать add_filter.

Я немного устарел в своем Wordpress, и у меня нет экземпляра WP, чтобы проверить это, но это общая теория:

Базовый пример:

add_filter('jwt_auth_token_before_sign', 'add_user_info_jwt', 10, 2);

function add_user_info_jwt($token, $user) {

    // fetch whatever information you want from the user, probably using the $user
    // object as starting point.

    $token['roles'] = implode(',', $user->roles);;

    return $token;
}

Полученный вами $token будет иметь следующую стартовую структуру и информацию:

$token = [
            'iss'  => get_bloginfo( 'url' ),
            'iat'  => $issuedAt,
            'nbf'  => $notBefore,
            'exp'  => $expire,
            'data' => [
                'user' => [
                    'id' => $user->data->ID,
                ]
            ]
];
person yivi    schedule 03.05.2019