summaryrefslogtreecommitdiffstats
path: root/wsd
diff options
context:
space:
mode:
authorPranam Lashkari <lpranam@collabora.com>2021-09-14 01:32:43 +0530
committerTor Lillqvist <tml@iki.fi>2021-10-21 12:28:13 +0300
commit88601440d02a36c20e2aeada1b04c03eeab4ff8e (patch)
treed2ae700647f914b9df7ba00ea8d22541b6add1ee /wsd
parentfreemium: renamed Freemium namespace to CommandControl (diff)
downloadonline-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.cpp4
-rw-r--r--wsd/DocumentBroker.cpp12
-rw-r--r--wsd/LOOLWSD.cpp3
-rw-r--r--wsd/Storage.cpp4
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))