# Estructura del Proyecto KACL

## /app
La carpeta `app` contiene el código específico de la aplicación, organizado en subdirectorios según la funcionalidad.

### /Config
- `KACL.php`: Contiene configuraciones específicas de tu librería KACL, como roles predeterminados, permisos, y otras configuraciones relevantes.

### /Filters
- `AclMiddleware.php`: Define un middleware que intercepta solicitudes HTTP para aplicar lógicas de control de acceso basadas en roles y permisos.

### /Libraries/KACL
- `AclService.php`: El núcleo de la librería, implementa la lógica de control de acceso, como verificar permisos y asignar roles.
- `AclFacade.php`: Proporciona una interfaz sencilla para acceder a las funcionalidades de AclService, simplificando su uso en otras partes de la aplicación.
- `ServiceProvider.php`: Registra AclService (y potencialmente otros servicios relacionados) para su fácil acceso a través del contenedor de servicios de CodeIgniter.

### /Interfaces
- `AclRepositoryInterface.php`, `RoleRepositoryInterface.php`, `PermissionRepositoryInterface.php`: Definen los contratos para los repositorios, estableciendo las operaciones básicas que deben ser implementadas.

### /Models/KACL
- `RoleModel.php`, `PermissionModel.php`, `ModuleModel.php`: Modelos que representan las entidades de roles, permisos y módulos en tu base de datos, respectivamente.

### /Repositories
- `AclRepository.php`, `RoleRepository.php`, `PermissionRepository.php`: Implementan las interfaces de repositorio, proporcionando una capa de abstracción sobre las operaciones de base de datos relacionadas con ACL.

### /Traits
- `AclTrait.php`: Ofrece métodos reutilizables que pueden ser incluidos en controladores o modelos para integrar fácilmente la verificación de permisos y otras funcionalidades de ACL.

## /docs
- `README.md`: Documentación principal de tu librería KACL, incluyendo cómo configurarla, cómo usarla, y cualquier otra información relevante para desarrolladores y usuarios finales.

## /Tests
- `.gitkeep`: Un archivo placeholder para asegurar que el directorio de pruebas se incluya en el repositorio, aunque esté vacío inicialmente. Aquí deberías agregar pruebas unitarias y de integración para tu librería.

## /backups
- `.gitkeep`: Similar al directorio de pruebas, este archivo asegura que el directorio de respaldos sea reconocido por git. Este directorio puede usarse para almacenar copias de seguridad de tu base de datos o de otros componentes críticos del proyecto.
