Skip to content

Commit 5376710

Browse files
committed
middleware
1 parent 73cf84f commit 5376710

2 files changed

Lines changed: 28 additions & 8 deletions

File tree

solid/lib/AppInfo/Application.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,17 @@ public function register(IRegistrationContext $context): void {
5555
return $c->query('UserSession')->getUser();
5656
});
5757

58-
$context->registerService('SolidCorsMiddleware', function($c) {
59-
return new SolidCorsMiddleware();
60-
});
58+
/**
59+
* Middleware
60+
*/
61+
$container->registerService(SolidCorsMiddleware::class, function(IServerContainer $c): SolidCorsMiddleware{
62+
return new SolidCorsMiddleware(
63+
$c->get(IRequest::class)
64+
);
65+
});
6166

62-
$context->registerMiddleware('SolidCorsMiddleware');
67+
// executed in the order that it is registered
68+
$container->registerMiddleware(SolidCorsMiddleware::class);
6369
}
6470

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

solid/lib/Middleware/SolidCorsMiddleware.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
11
<?php
22
namespace OCA\Solid\Middleware;
33

4-
use \OCP\AppFramework\Middleware;
5-
use \OCP\IRequest;
4+
use OCP\AppFramework\Middleware;
5+
use OCP\AppFramework\Http\Response;
6+
use OCP\IResponse;
7+
use OCP\IRequest;
68

79
class SolidCorsMiddleware extends Middleware {
8-
public function afterController($controller, $methodName, IResponse $response) {
10+
private $request;
11+
12+
public function __construct(IRequest $request) {
13+
$this->request = $request;
14+
}
15+
16+
public function afterController($controller, $methodName, Response $response) {
917
$corsMethods="GET, PUT, POST, OPTIONS, DELETE, PATCH";
1018
$corsAllowedHeaders="*, allow, accept, authorization, content-type, dpop, slug";
1119
$corsMaxAge=1728000;
1220
$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";
1321
$corsAllowCredentials=true;
14-
22+
23+
if (isset($this->request->server['HTTP_ORIGIN'])) {
24+
$corsAllowOrigin = $this->request->server['HTTP_ORIGIN'];
25+
} else {
26+
$corsAllowOrigin = '*';
27+
}
28+
1529
$response->addHeader('Access-Control-Allow-Origin', $corsAllowOrigin);
1630
$response->addHeader('Access-Control-Allow-Methods', $corsMethods);
1731
$response->addHeader('Access-Control-Allow-Headers', $corsAllowedHeaders);

0 commit comments

Comments
 (0)