Skip to content

Introdução

Projeto de implementação de ACL em aplicativos do Laravel 6 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 profissionais 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