as the title says I want to use a middleware inside a controller function. I have resource controllers, which their functions inside will have different access rights so I can't use a middleware in the web.php file, I have to use or apply it separately in each function to limit access, my googling hasn't been successful in getting a solution to that so far. Any help please and thanks in advance.
P.S. I believe no code is necessary here.
Laravel incorporates a middleware that confirms whether or not the client of the application is verified. If the client is confirmed, it diverts to the home page otherwise, it diverts to the login page. All controllers in Laravel are created in the Controllers folder, located in App/Http/Controllers.
php routes file, you can add a middleware to it as shown (picked this example from the DOC.) Route::get('admin/profile', function () { // })->middleware('auth'); To place multiple routes under the same middleware, you can use Route groups. Please remove the middleware from the controller constructor.
We can also assign the middleware to the controller's routes within your route files. There are various ways of assigning the middleware to the controller: Assigning the middleware to the controller in the web. php file.
There are 3 ways to use a middleware inside a controller:
1) Protect all functions:
public function __construct()
{
$this->middleware('auth');
}
2) Protect only some functions:
public function __construct()
{
$this->middleware('auth')->only(['functionName1', 'functionName2']);
}
3) Protect all functions except some:
public function __construct()
{
$this->middleware('auth')->except(['functionName1', 'functionName2']);
}
Here you can find all the documentation about this topic: Controllers
I hope this can be helpful, regards!
Middleware could also be applied to just one function, just add the method name in your controller constructor
public function __construct()
{
// Middleware only applied to these methods
$this->middleware('loggedIn', [
'only' => [
'update' // Could add bunch of more methods too
]
]);
}
OR
public function __construct()
{
// Middleware only applied to these methods
$this->middleware('loggedIn')->only([
'update' // Could add bunch of more methods too
]);
}
Here's the documentation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With