Skip to content

Commit c52a752

Browse files
committed
fix: #138 Missing worker policy when launching assistant
Signed-off-by: Sebastien Marinier <seb@smarinier.net>
1 parent 8ae9bf0 commit c52a752

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

lib/AppInfo/Application.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use OCA\Assistant\Capabilities;
66
use OCA\Assistant\Listener\BeforeTemplateRenderedListener;
7+
use OCA\Assistant\Listener\CSPListener;
78
use OCA\Assistant\Listener\FreePrompt\FreePromptReferenceListener;
89
use OCA\Assistant\Listener\SpeechToText\SpeechToTextReferenceListener;
910
use OCA\Assistant\Listener\TaskFailedListener;
@@ -20,6 +21,7 @@
2021
use OCP\AppFramework\Bootstrap\IRegistrationContext;
2122
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
2223
use OCP\Collaboration\Reference\RenderReferenceEvent;
24+
use OCP\Security\CSP\AddContentSecurityPolicyEvent;
2325
use OCP\TaskProcessing\Events\TaskFailedEvent;
2426
use OCP\TaskProcessing\Events\TaskSuccessfulEvent;
2527

@@ -55,6 +57,8 @@ public function register(IRegistrationContext $context): void {
5557
$context->registerEventListener(TaskFailedEvent::class, TaskFailedListener::class);
5658

5759
$context->registerNotifierService(Notifier::class);
60+
61+
$context->registerEventListener(AddContentSecurityPolicyEvent::class, CSPListener::class);
5862
}
5963

6064
public function boot(IBootContext $context): void {

lib/Listener/CSPListener.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace OCA\Assistant\Listener;
6+
7+
use OCP\AppFramework\Http\ContentSecurityPolicy;
8+
use OCP\EventDispatcher\Event;
9+
use OCP\EventDispatcher\IEventListener;
10+
use OCP\Security\CSP\AddContentSecurityPolicyEvent;
11+
12+
/**
13+
* @template-implements IEventListener<AddContentSecurityPolicyEvent>
14+
*/
15+
class CSPListener implements IEventListener {
16+
17+
public function __construct(
18+
) {
19+
}
20+
21+
public function handle(Event $event): void {
22+
if (!($event instanceof AddContentSecurityPolicyEvent)) {
23+
return;
24+
}
25+
26+
$csp = new ContentSecurityPolicy();
27+
$csp->addAllowedWorkerSrcDomain('blob:');
28+
$event->addPolicy($csp);
29+
}
30+
}

0 commit comments

Comments
 (0)