diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2022-11-09 21:32:05 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-09 21:32:05 +0300 |
commit | ead324f35c91cca19df81877e7d6d7cd799d79f3 (patch) | |
tree | 9ab3ed52100484a2839baa0abc22bdb845879157 | |
parent | 525b42e27f3ef4eee7b0e0d17214f0d0408ef29f (diff) | |
parent | fabaff07f0bd35cf15a5b3291cfe744907350491 (diff) |
Merge pull request #8330 from nextcloud/bugfix/8315/fix-signaling-server-check-when-blocked-from-talk
Fix signaling server check when admin is blocked from talk
-rw-r--r-- | lib/Middleware/CanUseTalkMiddleware.php | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Middleware/CanUseTalkMiddleware.php b/lib/Middleware/CanUseTalkMiddleware.php index 482fbe57f..99ed059a1 100644 --- a/lib/Middleware/CanUseTalkMiddleware.php +++ b/lib/Middleware/CanUseTalkMiddleware.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace OCA\Talk\Middleware; use OCA\Talk\Config; +use OCA\Talk\Controller\SignalingController; use OCA\Talk\Exceptions\ForbiddenException; use OCA\Talk\Middleware\Exceptions\CanNotUseTalkException; use OCA\Talk\Room; @@ -36,20 +37,24 @@ use OCP\AppFramework\OCS\OCSException; use OCP\AppFramework\OCSController; use OCP\AppFramework\Utility\IControllerMethodReflector; use OCP\IConfig; +use OCP\IGroupManager; use OCP\IUser; use OCP\IUserSession; class CanUseTalkMiddleware extends Middleware { private IUserSession $userSession; + private IGroupManager $groupManager; private IControllerMethodReflector $reflector; private Config $talkConfig; private IConfig $serverConfig; public function __construct(IUserSession $userSession, + IGroupManager $groupManager, IControllerMethodReflector $reflector, Config $talkConfig, IConfig $serverConfig) { $this->userSession = $userSession; + $this->groupManager = $groupManager; $this->reflector = $reflector; $this->talkConfig = $talkConfig; $this->serverConfig = $serverConfig; @@ -64,6 +69,12 @@ class CanUseTalkMiddleware extends Middleware { public function beforeController($controller, $methodName): void { $user = $this->userSession->getUser(); if ($user instanceof IUser && $this->talkConfig->isDisabledForUser($user)) { + if ($methodName === 'getWelcomeMessage' + && $controller instanceof SignalingController + && $this->groupManager->isAdmin($user->getUID())) { + return; + } + throw new CanNotUseTalkException(); } |