- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/document/onlyoffice/onlyofficehandler.php
- Класс: BitrixDiskDocumentOnlyOfficeOnlyOfficeHandler
- Вызов: OnlyOfficeHandler::isValidToken
static function isValidToken(string $token): Result
{
$result = new Result();
$http = new HttpClient([
'socketTimeout' => 5,
'streamTimeout' => 5,
'version' => HttpClient::HTTP_1_1,
]);
$url = self::getApiUrlRoot() . '/coauthoring/CommandService.ashx';
$postBody = ['c' => 'version'];
$http->setHeader('Content-Type', 'application/json');
$postFields = Json::encode($postBody);
if ($http->post($url, $postFields) === false)
{
return $result->addError(new MainError('Server is not available.'));
}
if ($http->getStatus() !== 200)
{
return $result->addError(new MainError('Server is not available. Status ' . $http->getStatus()));
}
$response = Json::decode($http->getResult());
if (isset($response['version']))
{
return $result->addError(new MainError('JSON Web Token is disabled on server. Please turn on this feature. https://api.onlyoffice.com/editors/signature/'));
}
$http = new HttpClient([
'socketTimeout' => 5,
'streamTimeout' => 5,
'version' => HttpClient::HTTP_1_1,
]);
$http->setHeader('Content-Type', 'application/json');
$http->setHeader('Authorization', 'Bearer ' . JWT::encode($postBody, $token));
$postFields = Json::encode($postBody);
if ($http->post($url, $postFields) === false)
{
return $result->addError(new MainError('Server is not available.'));
}
if ($http->getStatus() !== 200)
{
return $result->addError(new MainError('Server is not available. Status ' . $http->getStatus()));
}
$response = Json::decode($http->getResult());
if (isset($response['error']) && $response['error'] !== 0)
{
return $result->addError(new MainError('Secret key is invalid. Please fix it, follow https://api.onlyoffice.com/editors/signature/'));
}
$result->setData([
'version' => $response['version'],
]);
return $result;
}