summaryrefslogtreecommitdiffstats
path: root/lib/base.php
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2019-07-17 17:36:00 +0200
committerGitHub <noreply@github.com>2019-07-17 17:36:00 +0200
commit782554d2acdfd48b322753500906e8b291035250 (patch)
tree883a1a7b664ce1d0af21cf76b284afa2fae1b470 /lib/base.php
parent223a91d5ef91057f0e373a5824e4f360724d72fd (diff)
parent99f2c82222b0c67b3eddc8dff71aed1acacf1f23 (diff)
downloadnextcloud-server-782554d2acdfd48b322753500906e8b291035250.tar.gz
nextcloud-server-782554d2acdfd48b322753500906e8b291035250.zip
Merge pull request #16075 from nextcloud/bugfix/15823/app-restricted-groups
Remove deleted groups from app restrictions fixes #15823
Diffstat (limited to 'lib/base.php')
-rw-r--r--lib/base.php25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/base.php b/lib/base.php
index 30d57153de9..7812922c168 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -717,6 +717,7 @@ class OC {
self::registerEncryptionHooks();
self::registerAccountHooks();
self::registerResourceCollectionHooks();
+ self::registerAppRestrictionsHooks();
// Make sure that the application class is not loaded before the database is setup
if ($systemConfig->getValue("installed", false)) {
@@ -848,6 +849,30 @@ class OC {
\OCP\Util::connectHook('OC_User', 'changeUser', $hookHandler, 'changeUserHook');
}
+ private static function registerAppRestrictionsHooks() {
+ $groupManager = self::$server->query(\OCP\IGroupManager::class);
+ $groupManager->listen ('\OC\Group', 'postDelete', function (\OCP\IGroup $group) {
+ $appManager = self::$server->getAppManager();
+ $apps = $appManager->getEnabledAppsForGroup($group);
+ foreach ($apps as $appId) {
+ $restrictions = $appManager->getAppRestriction($appId);
+ if (empty($restrictions)) {
+ continue;
+ }
+ $key = array_search($group->getGID(), $restrictions);
+ unset($restrictions[$key]);
+ $restrictions = array_values($restrictions);
+ if (empty($restrictions)) {
+ $appManager->disableApp($appId);
+ }
+ else{
+ $appManager->enableAppForGroups($appId, $restrictions);
+ }
+
+ }
+ });
+ }
+
private static function registerResourceCollectionHooks() {
\OC\Collaboration\Resources\Listener::register(\OC::$server->getEventDispatcher());
}