Skip to content

Introdução

Projeto de implementação de ACL em aplicativos do Laravel 5.7 from Scratch

Usando Users, Roles, Permissions, Provider, Middleware, Trait, Gates, etc


Seção Inicial

Objetivos deste projeto

Sei que existem vários e ótimos pacotes com a mesma finalidade deste para laravel, como o spatie permissions, o laravel-admin, o laravue, o laratrust e outros mais. Este são pacotes são criados por profissioonais com grande experiência com laravel e por conta disso algumas vezes vem com um código meio complexo. Mas eu estave querendo aprender a fazer eu mesmo, ter o máximo controle possível, usar apenas os recursos nativos do laravel e criar de forma simples, sempre que possível. E o resultado está aqui para você avaliar. Adianto que gostei muito da experiencia e do resultado e que aprendi bastante também com a criação deste projeto.

O controle de acesso (ACL) de aplicativos é algo importante, especialmente em grandes aplicativos.

Críticas, sugestões (issues), pull requests, forkes e colaborações e colaboradores serão muito bem vindos

Issues

Pull request

Observação: este projeto é fruto de várias pesquisas pela internet e de alguns experimentos meus

Conta com três versões

  • ribafs/laravel-acl - para o laravel 8
  • ribafs/laravel7-acl - para o laravel 7
  • ribafs/laravel6-acl - para o laravel 6
  • ribafs/laravel58-acl - para o laravel 5.8

Planejamento inicial

Teremos as seguintes tabelas principais

1
2
3
4
users
roles
permissions
clients

Teremos os seguintes usuários

1
2
3
4
1-Super
2-Admin
3-Manager
4-User

As roles

1
2
3
4
1-super
2-admin
3-manager
4-user

As permissões

1
2
3
4
5
6
7
1-all-all
2-users-all
3-roles-all
4-permissions-all
5-clients-all
6-products-all
7-clients-index

Tabelas pivô

As roles e permissions serão atribuidas aos usuários via código e não diretamente. Elas serão armazenadas nas tabelas pivô: - user_role - user_permission - role_permission

Tela inicial dos 4 usuários

Tela welcome

Welcome

User super

Super user

User admin

Admin user

User manager

Manager user

User user

User user