Executando verificação de segurança...
2

[Middlewares - Laravel 9] - Como adicionar um middleware a apenas algumas rotas?

Pessoal, queria saber como adicionar um middleware a rotas específicas, mas existe um porém, são rotas criadas a partir do padrão CRUD do laravel, o Route::resource, confira:

Route::resource("user", UserController::class)->middleware('check.if.admin');

Quero saber como adiciono esse middleware a apenas algumas rotas, ex: create, store, destroy

Carregando publicação patrocinada...
2

Sim é possivel fazer isso.

Docs - Documentação

Exemplo:

class UserController extends Controller
{
    /**
     * Instantiate a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('log')->only('index'); // Aplica apenas para o método index
        
        
        $this->middleware('subscribed')->except('store'); // Aplica  para todos, menos para o store
    }
}
1
2

Você pode criar as rotas separadamente sem usar o resource e agrupá-las para adicionar o middleware de uma vez só. Não sei se tem um método de middleware para somente algumas rotas usando resources.

Se for algo do tipo de permissão, aí você pode usar as policies ou gates no lugar do middleware.

1

Essas abordagens são mais "corretas" para o meu objetivo? Estou realmente tentando implementar restrições a algumas feats da minha aplicação. Como sou iniciante no laravel, não sei como várias coisas são abordadas no ecosistema.

2

Sim, os Gates e as Policies são muito utilizados para toda a parte de ACL/controle de acesso e permissões.

Você pode implementar o seu próprio controle de permissões com eles, ou utilizar pacotes já prontos como o Laravel Permission da Spatie.

Se for definir apenas com base em o usuário ser admin ou não, uma policie vai ser mais simples de usar.

Se for ter um lugar onde você consegue definir pra cada usuário quais permissões ele terá, aí os Gates vão te dar mais liberdade pra fazer isso.

0