Токены авторизации
В модуле предусмотрено два вида авторизации:
- с помощью логина и пароля пользователя
- с помощью токена
В данном случае будет рассмотрена авторизация с помощью токена.
Для возможности авторизации по токену, необходимо выполнить условия:
- Включить Авторизацию по токену в настройках модуля - раздел Безопасность;
- Сгенерировать токены для пользователей - раздел Безопасность;
- Рекомендуется задать общую Ключевую фразу для токена - раздел Безопасность;
- Настроить авторизацию в нужных роутах - Карта роутов. Ключи
['security']['auth']['required']и['security']['auth']['type']- пример карты; - Со стороны клиента, при запросе, передать заголовок 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) {
}