Download the PHP package lechuganegra/accessmanager without Composer
On this page you can find all versions of the php package lechuganegra/accessmanager. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download lechuganegra/accessmanager
More information about lechuganegra/accessmanager
Files in lechuganegra/accessmanager
Package accessmanager
Short Description Paquete para gestión de roles, permisos y accesos
License MIT
Informations about the package accessmanager
Lechuga Negra - AccessManager para Laravel
Este paquete de Laravel proporciona una solución integral para la gestión de accesos en tus aplicaciones, permitiendo la definición de roles, permisos agrupados y rutas, con una lógica de relaciones muchos a muchos entre roles y permisos. Además, incluye un middleware para la validación de permisos en rutas, asegurando un control de acceso robusto y flexible.
Características Principales
- Gestión de Roles: Define roles con distintos niveles de acceso, permitiendo una administración granular de privilegios.
- Banco de Permisos: Asigna permisos específicos a roles, agrupados por contexto para facilitar su administración.
- Asociación de Rutas: Vincula permisos a rutas de forma opcional. Si una ruta no está registrada, el comportamiento depende de la variable
ACCESS_MANAGER_STRICT_ROUTES. - Middleware de Validación: Valida los permisos de las rutas mediante un middleware, asegurando que solo los usuarios autorizados puedan acceder a ellas.
- Arrancador de Capacidades: Archivo de configuración que permite el registro de permisos agrupados y rutas.
- Personalización del Modelo de Usuario: Permite utilizar un modelo de usuario personalizado, adaptándose a las necesidades de cada proyecto.
- Log de Auditoría: Registra automáticamente las acciones de creación, actualización y eliminación de roles en
capability_logs, incluyendo el usuario que ejecutó la acción, IP, user agent y snapshot de datos.
Estructura de Base de Datos
Instalación
-
Crear grupo de paquetes:
Crear la carpeta packages en la raíz del proyecto e ingresar a la carpeta:
Crear el grupo de carpetas dentro de la carpeta creada, e ingresar a l carpeta:
-
Clonar el paquete:
Clonar el paquete en el grupo de carpetas creado y renombrarlo para que el Provider pueda registrarlo en la instalación
-
Configurar composer del proyecto:
Dirígite a la raíz de tu proyecto, edita tu archivo
composer.jsony añade el paquete como repositorio:también deberás añadir el namespace del paquete al autoloading de PSR-4:
-
Ejecutar composer require:
Después de editar tu archivo, abre tu terminal y ejecuta el siguiente comando para agregar el paquete a las dependencias de tu proyecto:
Este comando descargará el paquete y actualizará tu archivo
composer.json. -
Publicar archivo de configuración:
Ejecuta el siguiente comando para copiar los archivos de configuración del paquete a la carpeta
configdel proyecto::Esto te permitirá personalizar el comportamiento del paquete desde tu proyecto.
-
Configurar el modelo de usuario (opcional):
Puedes editar el archivo
config/accessmanager.phpy modifica la entradauser_entitycon la información de tu modelo: -
Ejecutar las migraciones:
Ejecuta las migraciones del paquete para crear las tablas necesarias en la base de datos:
Nota: Esta migración agrega un campo
admina la tabla de usuarios. Se recomienda no incluir este campo en el atributofillabledel modelo para evitar modificaciones accidentales. -
Ejecutar el seeder:
Ejecuta el seeder del paquete para poblar las tablas con datos iniciales:
-
Limpiar la caché:
Limpia la caché de configuración y rutas para asegurar que los cambios se apliquen correctamente:
-
Regenerar clases:
Regenerar las clases con el cargador automático "autoload"
Uso
Endpoints del Servicio
Puede importar el archivo postman_collection.json que se ubica en la carpeta docs de la raíz del paquete.
Variables de Entorno
Puede determinar el comportamiento del paquete mediante las siguientes variables de entorno:
Modelo de usuario
ACCESS_MANAGER_USER_MODEL: Clase del modelo de usuario de tu proyecto.ACCESS_MANAGER_USER_TABLE: Nombre de la tabla de usuarios en la base de datos.
Sincronización de permisos y rutas
false(default): Sincronización aditiva — agrega nuevos permisos y rutas sin eliminar los existentes.true: Sincronización estricta — elimina los permisos y rutas que ya no estén definidos en la configuración.
Restricción de acceso por ruta
true(default): Bloquea con 403 si la ruta no está registrada encapability_routes. Recomendado para producción.false: Permite el acceso si la ruta no está registrada. Útil durante desarrollo.
Middleware de Validación
Para proteger tus rutas con el middleware de validación de permisos, utiliza capability.access en tus definiciones de rutas:
Asignar Roles
Para poder asignar roles a una entidad, es importante generar una relación polimórfica personalizada para relacionar el puente de comunicación entre la entidad (modelo) a capability_roles.
Usar el modelo que funcionará como puente de comunicación en una relación polimórfica de muchos a muchos:
Agregar la función de relación através del puente de conexión:
Dirígete al archivo AppServiceProvider.php, y en tu boot de arranque, agregar la entidad que deseas vincular a la relación con roles, invocar la librería eloquent de relación:
Agregar las entidades que desees, separado por ,:
Diagnóstico del Sistema
El paquete incluye un comando artisan para verificar el estado de permisos y rutas registradas:
Este comando realiza tres verificaciones:
- Permisos sin rutas asociadas: Lista los permisos que no tienen ninguna ruta vinculada.
- Rutas sin permisos asociados: Lista las rutas registradas en BD que no tienen ningún permiso vinculado.
- Rutas huérfanas: Lista las rutas registradas en BD que ya no existen en Laravel.
Upgrade Guide
v1.x → v2.0.0
Cambios breaking:
capability_moduleseliminada — los permisos ahora se agrupan con la columnagroupencapability_permissionsentity_modulerenombrado aentity_typeenrelation_entity_rolecreated_byencapability_rolesya no tiene FK ausers- Config
accessmanager_seeders.modulesrenombrado aaccessmanager_seeders.groups - Ruta
session/permissionsmovida fuera del middlewarecapability.access
Pasos para migrar:
- Actualiza el paquete a v2.0.0
-
Ejecuta las migraciones — migrarán los datos automáticamente:
- Actualiza tu
accessmanager_seeders.php— renombra la clavemodulesporgroupsy elimina el camponamedel grupo - Si usas
entity_moduleen tu código para asignar roles, cámbialo aentity_type - Si tienes la ruta
session/permissionsdentro de un grupocapability.access, sácala y déjala solo conauth:api