Токены

В модуле предусмотрено два вида авторизации:

  • с помощью логина и пароля пользователя

  • с помощью токена

В данном случае будет рассмотрена авторизация с помощью токена.

Для возможности авторизации по токену, необходимо выполнить условия:

  1. Включить Авторизацию по токену в настройках модуля - раздел Безопасность;

  2. Сгенерировать токены для пользователей - раздел Безопасность;

  3. Рекомендуется задать общую Ключевую фразу для токена - раздел Безопасность;

  4. Настроить авторизацию в нужных роутах - Карта роутов. Ключи ['security']['auth']['required'] и ['security']['auth']['type'] - пример карты;

  5. Со стороны клиента, при запросе, передать заголовок Authorization-Token со значением токена, а именно {ключевая фраза}:{токен}. Ключевая фраза указывается при наличии.

После такой настройки, на нужных роутах будет доступна авторизация по токену. И доступ к данным будет предоставлен только после проверки токена.

Также в модуле имеется класс для работы с токенами, ниже представлено описание методов класса.

use \Bitrix\Main\Loader;
use \Bitrix\Main\LoaderException;
use \Artamonov\Rest\Foundation\Token;


try {

Loader::includeModule('artamonov.rest');

$token = Token::getInstance();
$userId = 1;
$clientToken = '8f757146-097eb57b-b07d669e-112463ff';

// Возвращает информацию по токену
// То есть, данные пользователя, которому принадлежит токен
// Используется метод UserTable::getList()
$result = $token->getData($clientToken);

// Возвращает данные токена по ID пользователя
$result = $token->getDataByUserId($userId);

// Возвращает срок годности токена
$result = $token->getExpirationDate($clientToken);

// Обновляет срок годности токена, согласно настройкам Безопасности модуля
$result = $token->updateExpirationDate($clientToken);

// Удаляет токен
$result = $token->delete($clientToken);

// Генерация токенов для пользователей
// Без переданных параметров, будут сгенерированы токены для тех пользователей, у кого токены отсутствуют
// Поддерживается параметр $parameters - все те же ключи, что и для метода UserTable::getList()
// И параметр $update со значениями true | false - указывается на то, обновлять уже созданные токены или же создать новые токены, для тех у кого их нет
$result = $token->generate();

// Пример обновления токенов для пользователей, у которых ID больше 30
$parameters['filter'] = [
    '>ID' => 30
];
$update = true;
$result = $token->generate($parameters, $update);

} catch (LoaderException $e) {
}

Last updated