Skip to content

Commit c1d1d12

Browse files
committed
#26 Add auto CORS support, fix more stupid JS issues
1 parent bf8c190 commit c1d1d12

20 files changed

+97671
-456
lines changed

app/Http/Controllers/Controller.php

+9
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,13 @@
1010
class Controller extends BaseController
1111
{
1212
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
13+
protected static function corsHeaders(): array
14+
{
15+
return [
16+
'Access-Control-Allow-Origin' => '*',
17+
'Access-Control-Allow-Methods' => 'GET, PUT, PATCH, POST, OPTIONS',
18+
'Access-Control-Allow-Headers' => 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range',
19+
'Access-Control-Expose-Headers' => 'Content-Length,Content-Range',
20+
];
21+
}
1322
}

app/Http/Controllers/RequestController.php

+7-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public function create(HttpRequest $httpRequest, $tokenId)
6464
? $httpRequest->segment(2)
6565
: $token->default_status;
6666

67-
return new Response(
67+
$response = new Response(
6868
$token->default_content,
6969
$responseStatus,
7070
[
@@ -73,6 +73,12 @@ public function create(HttpRequest $httpRequest, $tokenId)
7373
'X-Token-Id' => $token->uuid,
7474
]
7575
);
76+
77+
if ($token->cors) {
78+
$response->withHeaders($this::corsHeaders());
79+
}
80+
81+
return $response;
7682
}
7783

7884
/**

app/Http/Controllers/TokenController.php

+13
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,17 @@ public function update(CreateTokenRequest $request, string $tokenId) : JsonRespo
7979

8080
return new JsonResponse($token);
8181
}
82+
83+
public function toggleCors(string $tokenId): JsonResponse
84+
{
85+
$token = $this->tokens->find($tokenId);
86+
87+
$token->cors = isset($token->cors) ? !$token->cors : true;
88+
89+
$this->tokens->store($token);
90+
91+
logger()->info("[CORS] $tokenId toggle");
92+
93+
return new JsonResponse(['enabled' => $token->cors]);
94+
}
8295
}

app/Http/routes.php

+1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@
2525
$router->post('token', 'TokenController@create');
2626
$router->delete('token/{tokenId}', 'TokenController@delete');
2727
$router->put('token/{tokenId}', 'TokenController@update');
28+
$router->put('token/{tokenId}/cors/toggle', 'TokenController@toggleCors');
2829
});

app/Storage/Token.php

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static function createFromRequest(CreateTokenRequest $request)
3131
'default_status' => (int)$request->get('default_status', 200),
3232
'default_content_type' => $request->get('default_content_type', 'text/plain'),
3333
'timeout' => (int)$request->get('timeout', null),
34+
'cors' => false,
3435
'created_at' => Carbon::now()->toDateTimeString(),
3536
'updated_at' => Carbon::now()->toDateTimeString(),
3637
]);

gulpfile.js

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ require("laravel-elixir-webpack");
1414

1515
elixir(function(mix) {
1616
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap', 'public/fonts/bootstrap');
17+
mix.copy('node_modules/socket.io-client/dist/socket.io.js*', 'public/js');
1718
mix.sass('app.scss');
1819
mix.browserify(['libs.js'], 'public/js/libs.js');
1920
mix.browserify(['echo.js', 'app.js']);

0 commit comments

Comments
 (0)