@@ -36,6 +36,8 @@ class App implements ArrayAccess {
36
36
37
37
protected $ middlewares = array ();
38
38
39
+ protected $ global_middlewares = array ();
40
+
39
41
protected $ waiting_list_providers = array ();
40
42
41
43
protected $ providers = array ();
@@ -124,6 +126,38 @@ public function setMiddleware($name, $callable)
124
126
$ this ->middlewares [$ name ] = $ callable ;
125
127
}
126
128
129
+ /**
130
+ * Check middleware is registered or not
131
+ *
132
+ * @param string $name
133
+ * @return void
134
+ */
135
+ public function hasMiddleware ($ name )
136
+ {
137
+ return isset ($ this ->middlewares [$ name ]);
138
+ }
139
+
140
+ /**
141
+ * Add global middleware
142
+ *
143
+ * @param string|callable $name_or_callable
144
+ * @return void
145
+ */
146
+ public function useMiddleware ($ name_or_callable )
147
+ {
148
+ if (!is_callable ($ name_or_callable )) {
149
+ if (is_string ($ name_or_callable ) AND $ this ->hasMiddleware ($ name_or_callable )) {
150
+ $ callable = $ this ->middlewares [$ name_or_callable ];
151
+ } else {
152
+ throw new InvalidArgumentException ("Cannot use global middleware. Middleware must be callable or registered middleware " , 1 );
153
+ }
154
+ } else {
155
+ $ callable = $ name_or_callable ;
156
+ }
157
+
158
+ $ this ->global_middlewares [] = $ callable ;
159
+ }
160
+
127
161
/**
128
162
* Register GET route
129
163
*
@@ -205,7 +239,11 @@ public function group($prefix, Closure $grouper)
205
239
*/
206
240
public function route ($ methods , $ path , $ action )
207
241
{
208
- return $ this ->router ->add ($ methods , $ path , $ action );
242
+ $ route = $ this ->router ->add ($ methods , $ path , $ action );
243
+ if (!empty ($ this ->global_middlewares )) {
244
+ $ route ->middleware ($ this ->global_middlewares );
245
+ }
246
+ return $ route ;
209
247
}
210
248
211
249
/**
0 commit comments