Skip to content

Commit 457d10d

Browse files
committed
fix : route group doesn't have middleware
1 parent 21cf487 commit 457d10d

File tree

3 files changed

+56
-24
lines changed

3 files changed

+56
-24
lines changed

core/Support/http/route/IRoute.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public static function get($uri, $controller);
99
public static function post($uri, $controller);
1010
public static function delete($uri, $controller);
1111
public static function patch($uri, $controller);
12-
public static function middleware($middleware);
12+
public function middleware($middleware);
1313
public static function GetRoute($name);
1414
public static function Redirect($name);
1515
public function Run($uri, $requestType);

core/Support/http/route/Route.php

Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ class Route implements IRoute
1818

1919
private static $temp = [];
2020

21+
/**
22+
* Destroy all the temporary
23+
* @param void
24+
*/
25+
public function __destruct()
26+
{
27+
unset(self::$temp['uri']);
28+
unset(self::$temp['method']);
29+
}
30+
2131
/**
2232
* Starting Point of Route class to Register URI to route
2333
* Route::get|post|patch|delete('uri', [controller::class, 'method'])
@@ -40,11 +50,11 @@ public static function get($uri, $controller = [])
4050
{
4151
$self = new static;
4252

43-
self::setRoute('GET', $uri, $controller);
44-
4553
self::temp('uri', $uri);
4654
self::temp('method', 'GET');
4755

56+
self::setRoute('GET', $uri, $controller);
57+
4858
return $self;
4959
}
5060

@@ -57,11 +67,11 @@ public static function post($uri, $controller = [])
5767
{
5868
$self = new static;
5969

60-
self::setRoute('POST', $uri, $controller);
61-
6270
self::temp('uri', $uri);
6371
self::temp('method', 'POST');
6472

73+
self::setRoute('POST', $uri, $controller);
74+
6575
return $self;
6676
}
6777

@@ -75,11 +85,11 @@ public static function patch($uri, $controller = [])
7585
{
7686
$self = new static;
7787

78-
self::setRoute('PATCH', $uri, $controller);
79-
8088
self::temp('uri', $uri);
8189
self::temp('method', 'PATCH');
8290

91+
self::setRoute('PATCH', $uri, $controller);
92+
8393
return $self;
8494
}
8595

@@ -92,22 +102,35 @@ public static function delete($uri, $controller = [])
92102
{
93103
$self = new static;
94104

95-
self::setRoute('DELETE', $uri, $controller);
96-
97105
self::temp('uri', $uri);
98106
self::temp('method', 'DELETE');
99107

108+
self::setRoute('DELETE', $uri, $controller);
109+
100110
return $self;
101111
}
102112

103113
/**
104-
* Register multiple route into same middleware
114+
* Starting point to register multiple routes into same middleware
105115
* @param callable $callback
106-
* @return void
116+
* @return self
117+
*/
118+
public static function group($middleware)
119+
{
120+
$self = new static;
121+
self::temp('middleware', $middleware);
122+
return $self;
123+
}
124+
125+
/**
126+
* Register multiple routes into same middleware
107127
*/
108-
public static function group(callable $callback)
128+
public function by(callable $callback)
109129
{
130+
self::temp('group_middleware', self::temp('middleware'));
110131
call_user_func($callback);
132+
unset(self::$temp['group_middleware']);
133+
unset(self::$temp['middleware']);
111134
}
112135

113136
/**
@@ -128,6 +151,9 @@ protected static function setRoute(string $method, string $uri, array|callable $
128151
"action" => $controller[1],
129152
];
130153
}
154+
if (self::temp('middleware') || self::temp('group_middleware')) {
155+
self::setMiddleware();
156+
}
131157
}
132158

133159
/**
@@ -183,15 +209,15 @@ public static function Redirect($name, array $data = null)
183209
* @param string $middleware MiddlewareName
184210
* @return this
185211
*/
186-
public static function middleware($middleware)
212+
public function middleware($middleware)
187213
{
188-
$self = new static;
189-
190214
self::temp('middleware', $middleware);
191215

192-
self::setMiddleware();
216+
if (self::temp('uri')) {
217+
self::setMiddleware();
218+
}
193219

194-
return $self;
220+
return $this;
195221
}
196222

197223
/**
@@ -200,12 +226,18 @@ public static function middleware($middleware)
200226
*/
201227
protected static function setMiddleware()
202228
{
203-
self::$route[self::$temp['method']][self::$temp['uri']] = array_merge(
204-
["middleware" => self::$temp['middleware']],
205-
self::$route[self::$temp['method']][self::$temp['uri']]
206-
);
207-
208-
unset(self::$temp['middleware']);
229+
if (self::temp('group_middleware')) {
230+
self::$route[self::$temp['method']][self::$temp['uri']] = array_merge(
231+
["middleware" => self::$temp['group_middleware']],
232+
self::$route[self::$temp['method']][self::$temp['uri']]
233+
);
234+
} else {
235+
self::$route[self::$temp['method']][self::$temp['uri']] = array_merge(
236+
["middleware" => self::$temp['middleware']],
237+
self::$route[self::$temp['method']][self::$temp['uri']]
238+
);
239+
unset(self::$temp['middleware']);
240+
}
209241
}
210242

211243
/**

core/docs/usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ Route groups allow you to share route attributes, such as middleware across a la
181181

182182
To assign middleware to all route inside the group, you may used group method to define middleware and the route of the group
183183

184-
Route::middleware('test')->group(function () {
184+
Route::group('test')->by(function () {
185185
Route::get('/group/1', [Group::class, 'index']);
186186
Route::get('/group/2', [Group::class, 'index']);
187187
});

0 commit comments

Comments
 (0)