diff options
author | Morris Jobke <hey@morrisjobke.de> | 2019-07-17 17:36:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-17 17:36:00 +0200 |
commit | 782554d2acdfd48b322753500906e8b291035250 (patch) | |
tree | 883a1a7b664ce1d0af21cf76b284afa2fae1b470 /lib/base.php | |
parent | 223a91d5ef91057f0e373a5824e4f360724d72fd (diff) | |
parent | 99f2c82222b0c67b3eddc8dff71aed1acacf1f23 (diff) | |
download | nextcloud-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.php | 25 |
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()); } |