Skip to content
This repository was archived by the owner on Jan 5, 2026. It is now read-only.

Commit 10aacdf

Browse files
authored
Merge pull request #32 from modulusphp/feature/cors-update
Feature/cors update
2 parents 101e7bc + 1f82c65 commit 10aacdf

4 files changed

Lines changed: 47 additions & 2 deletions

File tree

Upstart.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use App\Resolvers\AppServiceResolver;
66
use Modulus\Framework\Upstart\AppLogger;
77
use Modulus\Framework\Upstart\AppConnect;
8+
use Modulus\Framework\Upstart\HandleCors;
89
use Modulus\Framework\Upstart\ErrorReport;
910
use Modulus\Framework\Upstart\SwishRouter;
1011
use Modulus\Framework\Mocks\MustRememberMe;
@@ -15,6 +16,7 @@ class Upstart
1516
{
1617
use AppLogger; // Configure application logger
1718
use AppConnect; // Initialize Database connection and Environment variables
19+
use HandleCors; // Allow other applications to reach the router dispatch
1820
use SwishRouter; // Handle application routing
1921
use ErrorReport; // Handle application error reporting
2022
use ViewComponent; // Strap application View
@@ -42,6 +44,7 @@ class Upstart
4244
*/
4345
public function boot(?bool $isConsole = false) : void
4446
{
47+
$this->addCors();
4548
if (Upstart::$isReady) return;
4649

4750
$this->bootEnv();

Upstart/HandleCors.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace Modulus\Framework\Upstart;
4+
5+
trait HandleCors
6+
{
7+
/**
8+
* add Cors
9+
*
10+
* @return void
11+
*/
12+
public function addCors()
13+
{
14+
header('Access-Control-Allow-Credentials: 0');
15+
header('Access-Control-Allow-Origin: *');
16+
header('Access-Control-Allow-Headers: *');
17+
header('Access-Control-Allow-Methods: *');
18+
19+
if (isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] === "OPTIONS") {
20+
exit;
21+
}
22+
}
23+
24+
/**
25+
* remove Cors
26+
*
27+
* @return void
28+
*/
29+
public function removeCors()
30+
{
31+
header_remove('Access-Control-Allow-Credentials');
32+
header_remove('Access-Control-Allow-Origin');
33+
header_remove('Access-Control-Allow-Headers');
34+
header_remove('Access-Control-Allow-Methods');
35+
}
36+
}

Upstart/SwishEvents.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ private function swishFails()
3535
*/
3636
private function swishBefore()
3737
{
38-
return function($route, $callback) {
38+
$self = $this;
39+
return function($route, $callback) use ($self) {
3940
$route->variables = (new Reflect)->handle($callback, $route->variables, $route);
4041

4142
// get controller middleware
@@ -55,18 +56,23 @@ private function swishBefore()
5556
}
5657
}
5758

59+
// get all middleware's
5860
foreach (Route::$routes as $key => $value) {
5961
if ($value['id'] == $route->id) {
6062
$route->middleware = array_merge($value['middleware'], $all ?? []);
6163
}
6264
}
6365

66+
// create a new request object
6467
$request = Reflect::$request ?? new Request(array_merge($_POST, $_FILES));
6568
$request->route = $route;
6669
$this->setRequest($request);
6770

71+
// remove cors to allow the middleware to handle it
72+
$self->removeCors();
6873
Middleware::run($request, $route, substr($route->file, 0, strlen($route->file) - 4));
6974

75+
// return matched variables
7076
return $route->variables;
7177
};
7278
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "modulusphp/framework",
33
"description": "Framework component for modulusPHP",
4-
"version": "1.9.8.2",
4+
"version": "1.9.8.3",
55
"license": "MIT",
66
"type": "package",
77
"authors": [{

0 commit comments

Comments
 (0)