diff --git a/apps/webhook_listeners/lib/Controller/WebhooksController.php b/apps/webhook_listeners/lib/Controller/WebhooksController.php index 97bc8aa875eb5..bb3d7555382e2 100644 --- a/apps/webhook_listeners/lib/Controller/WebhooksController.php +++ b/apps/webhook_listeners/lib/Controller/WebhooksController.php @@ -26,8 +26,10 @@ use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCS\OCSNotFoundException; use OCP\AppFramework\OCSController; +use OCP\IGroupManager; use OCP\IRequest; use OCP\ISession; +use OCP\IUserSession; use Psr\Log\LoggerInterface; /** @@ -42,6 +44,8 @@ public function __construct( private WebhookListenerMapper $mapper, private ?string $userId, private ISession $session, + private IUserSession $userSession, + private IGroupManager $groupManager, ) { parent::__construct($appName, $request); } @@ -144,6 +148,12 @@ public function create( } catch (\ValueError $e) { throw new OCSBadRequestException('This auth method does not exist'); } + + $user = $this->userSession->getUser(); + if (!$user || !$this->groupManager->isAdmin($user->getUID())) { + $tokenNeeded = null; + } + try { $webhookListener = $this->mapper->addWebhookListener( $appId,