Q:

Laravel adding middleware inside a controller function

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.

A:

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

A:

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!

