Send permission parameter to wopi parameters.

Signed-off-by: Gökay Şatır <gokaysatir@gmail.com>
Change-Id: I0a779e7f27196ca987b11a619c9b0ee27a87bb4a
pull/8522/head
Gökay Şatır 2024-03-14 17:58:36 +03:00 committed by Gökay ŞATIR
parent 27670275ab
commit c127d54919
4 changed files with 13 additions and 3 deletions

View File

@ -238,6 +238,7 @@ void Session::parseDocOptions(const StringVector& tokens, int& part, std::string
else if (name == "isAllowChangeComments")
{
_isAllowChangeComments = value == "true";
++offset;
}
}

View File

@ -576,6 +576,9 @@ void ClientRequestDispatcher::handleIncomingMessage(SocketDisposition& dispositi
"access_token=" + accessDetails.accessToken(), "access_token_ttl=0"
};
if (!accessDetails.permission().empty())
options.push_back("permission=" + accessDetails.permission());
const RequestDetails fullRequestDetails =
RequestDetails(accessDetails.wopiSrc(), options, /*compat=*/std::string());
LOG_TRC("Creating RVS with key: " << requestKey << ", for DocumentLoadURI: "

View File

@ -415,7 +415,7 @@ bool FileServerRequestHandler::isAdminLoggedIn(const HTTPRequest& request, http:
fileInfo->set("OwnerId", "test");
fileInfo->set("UserId", userId);
fileInfo->set("UserFriendlyName", userNameString);
fileInfo->set("UserCanWrite", "true");
fileInfo->set("UserCanWrite", (requestDetails.getParam("permission") != "readonly") ? "true": "false");
fileInfo->set("PostMessageOrigin", postMessageOrigin);
fileInfo->set("LastModifiedTime", localFile->getLastModifiedTime());
fileInfo->set("EnableOwnerTermination", "true");
@ -1013,6 +1013,7 @@ static const std::string POSTMESSAGE_ORIGIN = "%POSTMESSAGE_ORIGIN%";
static const std::string BRANDING_THEME = "%BRANDING_THEME%";
static const std::string CHECK_FILE_INFO_OVERRIDE = "%CHECK_FILE_INFO_OVERRIDE%";
static const std::string BUYPRODUCT_URL = "%BUYPRODUCT_URL%";
static const std::string PERMISSION = "%PERMISSION%";
/// Per user request variables.
/// Holds access_token, css_variables, postmessage_origin, etc.
@ -1102,6 +1103,8 @@ public:
extractVariable(form, "buy_product", BUYPRODUCT_URL);
extractVariable(form, "permission", PERMISSION);
std::string buyProduct;
{
std::lock_guard<std::mutex> lock(COOLWSD::RemoteConfigMutex);
@ -1504,7 +1507,7 @@ FileServerRequestHandler::ResourceAccessDetails FileServerRequestHandler::prepro
socket->send(oss.str());
LOG_TRC("Sent file: " << relPath << ": " << preprocess);
return ResourceAccessDetails(wopiSrc, urv[ACCESS_TOKEN]);
return ResourceAccessDetails(wopiSrc, urv[ACCESS_TOKEN], urv[PERMISSION]);
}

View File

@ -80,9 +80,10 @@ public:
public:
ResourceAccessDetails() = default;
ResourceAccessDetails(std::string wopiSrc, std::string accessToken)
ResourceAccessDetails(std::string wopiSrc, std::string accessToken, std::string permission)
: _wopiSrc(std::move(wopiSrc))
, _accessToken(std::move(accessToken))
, _permission(std::move(permission))
{
}
@ -90,10 +91,12 @@ public:
const std::string wopiSrc() const { return _wopiSrc; }
const std::string accessToken() const { return _accessToken; }
const std::string permission() const { return _permission; }
private:
std::string _wopiSrc;
std::string _accessToken;
std::string _permission;
};
private: