diff options
author | Joas Schilling <coding@schilljs.com> | 2022-11-09 18:55:44 +0300 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2022-11-09 19:06:43 +0300 |
commit | fabaff07f0bd35cf15a5b3291cfe744907350491 (patch) | |
tree | 9ab3ed52100484a2839baa0abc22bdb845879157 | |
parent | 525b42e27f3ef4eee7b0e0d17214f0d0408ef29f (diff) |
Fix signaling server check when being blocked from talk
Signed-off-by: Joas Schilling <coding@schilljs.com>
-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(); } |