1
resposta

Como controlar autenticação por função e por usuário?

Gostaria de saber como funcionaria o controle de acesso restrito por funcionalidade no sistema, por exemplo: usuário X depois de logado, pode incluir uma nova série, mas não pode deletar uma série, usuário Y depois de logado pode excluir uma série mas não pode editar uma série já cadastrada e assim por diante, tudo isso com uma "view" mostrando quais são as permissões de acesso por usuário.

1 resposta

Olá Osvalcir,

O laravel possui um sistema de autorização baseado em "portões" e "políticas": https://laravel.com/docs/5.8/authorization

Aqui tem uma pequena introdução: https://diariodoprogramadortda.wordpress.com/2018/11/29/laravel-politicas-de-acesso-e-permissoes/

Além desse método existem algumas bibliotecas que você pode instalar que podem ajudar com a autorização. Uma muito utilizada é a spatie/laravel-permission: https://github.com/spatie/laravel-permission.

Com essa biblioteca você pode criar permissões e papéis e atribuir aos usuários.

Depois de instalada, você pode adicionar uma permissão para um usuário assim:

$user->givePermissionTo('editar artigo');

E adicionar uma papel assim:

$user->assignRole('administrador');

Então no seu código você pode testar se um usuário pode fazer uma ação assim:

// Ver se o usuário tem a permissão
$user->can('editar artigo');

// Ver se o usuário tem o papel
$user->hasRole('administrador');

Além disso a biblioteca ainda traz algumas diretivas blade para você fazer os mesmos testes acima diretamente nas views.

Isso é apenas uma introdução básica e apenas algumas possibilidades, qualquer dúvida pode perguntar mais.