Overview
Sistema de Abogados implements a robust role-based access control (RBAC) system using the Spatie Laravel Permission package. This system allows you to control what users can access and do within the application through roles and permissions.Spatie Laravel Permission Integration
The application uses thespatie/laravel-permission package to manage roles and permissions. The User model includes the HasRoles trait, enabling role and permission assignment:
app/Models/User.php
Default Roles
The system defines four primary roles during database seeding:Admin
Full system access including user, role, and permission management
Encargado
Case manager with access to conciliation and case management
Asistente
Assistant with access to conciliation and expediente support
Abogado
Lawyer with case management and client interaction capabilities
Role Seeder
Roles are created during database seeding:database/seeders/RoleSeeder.php
The
encargado role may be created manually or through additional seeders not shown in the base RoleSeeder.Permission Management
Permissions control specific actions users can perform. The system provides a complete CRUD interface for managing permissions.Creating Permissions
Administrators can create new permissions through the PermissionController:app/Http/Controllers/Admin/PermissionController.php
Assigning Permissions to Roles
Permissions can be assigned to roles to control role capabilities:Revoking Permissions from Roles
To remove a permission from a role:app/Http/Controllers/Admin/RoleController.php
DELETE /admin/roles/{role}/permissions/{permission}
Role Assignment
Assigning Roles to Users
Administrators can assign roles to users through the UserController:Removing Roles from Users
To remove a role from a user:app/Http/Controllers/Admin/UserController.php
DELETE /admin/users/{user}/roles/{role}
Direct Permission Assignment
In addition to role-based permissions, you can assign permissions directly to individual users.Giving Permissions to Users
app/Http/Controllers/Admin/UserController.php
POST /admin/users/{user}/permissions
Revoking Permissions from Users
app/Http/Controllers/Admin/UserController.php
DELETE /admin/users/{user}/permissions/{permission}
Middleware Protection
The application uses role-based middleware to protect routes. Only users with specific roles can access protected resources.Admin-Only Routes
All role and permission management is restricted to admin users:routes/web.php
Multi-Role Routes
Many routes allow access to multiple roles using the pipe (|) separator:
routes/web.php
Admin Routes Reference
Role Management Routes
Role Management Routes
GET /admin/roles- List all rolesGET /admin/roles/create- Create role formPOST /admin/roles- Store new roleGET /admin/roles/{role}/edit- Edit role formPUT /admin/roles/{role}- Update roleDELETE /admin/roles/{role}- Delete rolePOST /admin/roles/{role}/permissions- Assign permission to roleDELETE /admin/roles/{role}/permissions/{permission}- Revoke permission from role
Permission Management Routes
Permission Management Routes
GET /admin/permissions- List all permissionsGET /admin/permissions/create- Create permission formPOST /admin/permissions- Store new permissionGET /admin/permissions/{permission}/edit- Edit permission formPUT /admin/permissions/{permission}- Update permissionDELETE /admin/permissions/{permission}- Delete permissionPOST /admin/permissions/{permission}/roles- Assign role to permissionDELETE /admin/permissions/{permission}/roles/{role}- Remove role from permission
User Management Routes
User Management Routes
GET /admin/users- List all usersGET /admin/users/{user}- Show user with roles and permissionsDELETE /admin/users/{user}- Delete userPOST /admin/users/{user}/roles- Assign role to userDELETE /admin/users/{user}/roles/{role}- Remove role from userPOST /admin/users/{user}/permissions- Give permission to userDELETE /admin/users/{user}/permissions/{permission}- Revoke permission from user
Best Practices
Use Roles for Groups
Assign permissions to roles rather than individual users for easier management
Principle of Least Privilege
Only grant permissions necessary for users to perform their duties
Regular Audits
Periodically review user roles and permissions to ensure appropriateness
Document Custom Permissions
Keep track of custom permissions created for specific business needs
Checking Permissions in Code
The Spatie package provides several methods to check permissions:See Also
User Types
Learn about each user role and their specific capabilities
Authentication
Understand how authentication and session management works