Skip to content
Snippets Groups Projects
Verified Commit 7d179e00 authored by Florian Azizian's avatar Florian Azizian
Browse files

FEAT #13779 TIME 0:35 Use Firebase JWT + server secret for onlyOffice

parent c8d54c65
No related branches found
No related tags found
No related merge requests found
......@@ -8,6 +8,6 @@
<server_uri>onlyoffice.maarchcourrier.com</server_uri>
<server_port>80</server_port>
<server_ssl>false</server_ssl>
<server_token></server_token>
<server_secret></server_secret>
</onlyoffice>
</ROOT>
......@@ -16,6 +16,7 @@ namespace ContentManagement\controllers;
use Attachment\models\AttachmentModel;
use Docserver\models\DocserverModel;
use Firebase\JWT\JWT;
use Resource\controllers\ResController;
use Resource\models\ResModel;
use Respect\Validation\Validator;
......@@ -61,32 +62,18 @@ class OnlyOfficeController
return $response->withStatus(400)->withJson(['errors' => 'OnlyOffice server is disabled']);
}
$token = null;
$serverToken = (string)$loadedXml->onlyoffice->server_token;
if (!empty($serverToken)) {
$jwt = null;
$serverSecret = (string)$loadedXml->onlyoffice->server_secret;
if (!empty($serverSecret)) {
$header = [
"alg" => "HS256",
"typ" => "JWT"
];
$encHeader = OnlyOfficeController::base64UrlEncode(json_encode($header));
$encPayload = OnlyOfficeController::base64UrlEncode(json_encode($body['config']));
$hash = OnlyOfficeController::base64UrlEncode(OnlyOfficeController::calculateHash(['header' => $encHeader, 'payload' => $encPayload, 'serverToken' => $serverToken]));
$token = "$encHeader.$encPayload.$hash";
$jwt = JWT::encode($body['config'], $serverSecret, 'HS256', null, $header);
}
return $response->withJson($token);
}
public static function calculateHash($args = [])
{
return hash_hmac("sha256", $args['header'] . "." . $args['payload'], $args['serverToken'], true);
}
public static function base64UrlEncode($str)
{
return str_replace("/", "_", str_replace("+", "-", trim(base64_encode($str), "=")));
return $response->withJson($jwt);
}
public static function saveMergedFile(Request $request, Response $response)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment