diff options
author | Pranam Lashkari <lpranam@collabora.com> | 2021-09-14 01:32:43 +0530 |
---|---|---|
committer | Tor Lillqvist <tml@iki.fi> | 2021-10-21 12:28:13 +0300 |
commit | 88601440d02a36c20e2aeada1b04c03eeab4ff8e (patch) | |
tree | d2ae700647f914b9df7ba00ea8d22541b6add1ee /wsd | |
parent | freemium: renamed Freemium namespace to CommandControl (diff) | |
download | online-88601440d02a36c20e2aeada1b04c03eeab4ff8e.tar.gz online-88601440d02a36c20e2aeada1b04c03eeab4ff8e.zip |
introduce way to hide/restrict uno commands
Signed-off-by: Pranam Lashkari <lpranam@collabora.com>
Change-Id: I1225190a67f726832e5b38a7c3f690b51c1385f3
Diffstat (limited to 'wsd')
-rw-r--r-- | wsd/ClientSession.cpp | 4 | ||||
-rw-r--r-- | wsd/DocumentBroker.cpp | 12 | ||||
-rw-r--r-- | wsd/LOOLWSD.cpp | 3 | ||||
-rw-r--r-- | wsd/Storage.cpp | 4 |
4 files changed, 23 insertions, 0 deletions
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 79dd35fa19..cd1e714c3c 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -1021,6 +1021,10 @@ bool ClientSession::_handleInput(const char *buffer, int length) { return forwardToChild(std::string(buffer, length), docBroker); } + else if (tokens.equals(0, "restrictionstatus")) + { + return forwardToChild(std::string(buffer, length), docBroker); + } else { LOG_ERR("Session [" << getId() << "] got unknown command [" << tokens[0] << "]."); diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index de65eec637..6015cdd1c5 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -783,6 +783,18 @@ bool DocumentBroker::download(const std::shared_ptr<ClientSession>& session, con session->sendMessage("freemium: " + freemiumInfoString); #endif +#ifdef ENABLE_FEATURE_RESTRICTION + Object::Ptr restrictionInfo = new Object(); + restrictionInfo->set("IsRestrictedUser", CommandControl::RestrictionManager::isRestrictedUser()); + restrictionInfo->set("RestrictedCommandList", CommandControl::RestrictionManager::getRestrictedCommandList()); + + std::ostringstream ossRestrictionInfo; + restrictionInfo->stringify(ossRestrictionInfo); + const std::string restrictionInfoString = ossRestrictionInfo.str(); + LOG_TRC("Sending freemium info to client: " << restrictionInfoString); + session->sendMessage("restrictedCommands: " + restrictionInfoString); +#endif + #if ENABLE_SUPPORT_KEY if (!LOOLWSD::OverrideWatermark.empty()) watermarkText = LOOLWSD::OverrideWatermark; diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index e2be030e3e..1b4c2ef3a8 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -1122,6 +1122,9 @@ void LOOLWSD::innerInitialize(Application& self) { "freemium.impress_subscription_highlights", IMPRESS_SUBSCRIPTION_HIGHLIGHTS }, { "freemium.draw_subscription_highlights", DRAW_SUBSCRIPTION_HIGHLIGHTS }, #endif +#ifdef ENABLE_FEATURE_RESTRICTION + { "restricted_commands", "" }, +#endif { "user_interface.mode", USER_INTERFACE_MODE } }; diff --git a/wsd/Storage.cpp b/wsd/Storage.cpp index 418bc5b2ab..c4bc90ebb0 100644 --- a/wsd/Storage.cpp +++ b/wsd/Storage.cpp @@ -910,6 +910,10 @@ WopiStorage::WOPIFileInfo::WOPIFileInfo(const FileInfo &fileInfo, JsonUtil::findJSONValue(object, "IsUserFreemium", booleanFlag); CommandControl::FreemiumManager::setFreemiumUser(booleanFlag); + booleanFlag = false; + JsonUtil::findJSONValue(object, "IsUserRestricted", booleanFlag); + CommandControl::RestrictionManager::setRestrictedUser(booleanFlag); + if (JsonUtil::findJSONValue(object, "DisableChangeTrackingRecord", booleanFlag)) _disableChangeTrackingRecord = (booleanFlag ? WOPIFileInfo::TriState::True : WOPIFileInfo::TriState::False); if (JsonUtil::findJSONValue(object, "DisableChangeTrackingShow", booleanFlag)) |