Skip to content

Commit 73cf84f

Browse files
committed
add cors middleware
1 parent 8354e71 commit 73cf84f

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

solid/lib/AppInfo/Application.php

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

1212
use OCA\Solid\Service\UserService;
1313
use OCA\Solid\WellKnown\OpenIdConfigurationHandler;
14+
use OCA\Solid\Middleware\SolidCorsMiddleware;
1415

1516
use OCP\AppFramework\App;
1617
use OCP\AppFramework\Bootstrap\IBootContext;
@@ -53,6 +54,12 @@ public function register(IRegistrationContext $context): void {
5354
$context->registerService('User', function($c) {
5455
return $c->query('UserSession')->getUser();
5556
});
57+
58+
$context->registerService('SolidCorsMiddleware', function($c) {
59+
return new SolidCorsMiddleware();
60+
});
61+
62+
$context->registerMiddleware('SolidCorsMiddleware');
5663
}
5764

5865
public function boot(IBootContext $context): void {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
namespace OCA\Solid\Middleware;
3+
4+
use \OCP\AppFramework\Middleware;
5+
use \OCP\IRequest;
6+
7+
class SolidCorsMiddleware extends Middleware {
8+
public function afterController($controller, $methodName, IResponse $response) {
9+
$corsMethods="GET, PUT, POST, OPTIONS, DELETE, PATCH";
10+
$corsAllowedHeaders="*, allow, accept, authorization, content-type, dpop, slug";
11+
$corsMaxAge=1728000;
12+
$corsExposeHeaders="Authorization, User, Location, Link, Vary, Last-Modified, ETag, Accept-Patch, Accept-Post, Updates-Via, Allow, WAC-Allow, Content-Length, WWW-Authenticate, MS-Author-Via";
13+
$corsAllowCredentials=true;
14+
15+
$response->addHeader('Access-Control-Allow-Origin', $corsAllowOrigin);
16+
$response->addHeader('Access-Control-Allow-Methods', $corsMethods);
17+
$response->addHeader('Access-Control-Allow-Headers', $corsAllowedHeaders);
18+
$response->addHeader('Access-Control-Max-Age', (string)$corsMaxAge);
19+
$response->addHeader('Access-Control-Allow-Credentials', $corsAllowCredentials);
20+
$response->addHeader('Access-Control-Expose-Headers', $corsExposeHeaders);
21+
$response->addHeader('Accept-Patch', 'text/n3');
22+
}
23+
}

0 commit comments

Comments
 (0)