PHP authentication & authorization system with RBAC, CSRF, rate limiting, and PostgreSQL

Maintainers

Package info

github.com/juanvladimir13/phpauth

Homepage

pkg:composer/juanvladimir13/phpauth

Transparency log

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.0.4 2026-07-19 15:36 UTC

This package is auto-updated.

Last update: 2026-07-19 15:37:31 UTC


README

Un sistema completo de control de acceso seguro para PHP vanilla (sin frameworks) con PostgreSQL.

Funcionalidades

  • Autenticación: Registro, Login, Logout y actualización de contraseñas de forma segura.
  • Autorización (RBAC + Permisos): Middleware reusable para proteger rutas por rol o permisos granulares.
  • Seguridad Integrada:
    • password_hash con ARGON2ID.
    • Prevención de SQL Injection mediante PDO Prepared Statements y desactivación de emulación de consultas.
    • Prevención de Session Fixation (session_regenerate_id).
    • Mitigación de XSS y CSRF con sesiones httponly y samesite=Lax.
    • Protección activa contra CSRF mediante validación de tokens únicos con hash_equals.
    • Prevención de ataques de fuerza bruta (Rate Limiting).
    • Timeout por inactividad de sesión.

Casos de Uso Soportados

  • Paneles de administración o portales en HTML directo (Views tradicionales).
  • Funcionalidades API que devuelven JSON si se detecta la cabecera Accept: application/json en los endpoints como /login.php, permitiendo la integración con un Frontend SPA / JS.

Instalación

  1. Base de Datos

    • Asegúrate de tener PostgreSQL ejecutándose.
    • Crea tu base de datos (por ejemplo, auth_db).
    • Ejecuta el script SQL para inicializar el esquema:
      psql -U postgres -d auth_db -f auth/schema.sql

    (Nota: schema.sql ya incluye los roles admin, cliente y soporte, así como el permiso view_dashboard)

  2. Variables de Entorno

    • Copia .env.example a .env:
      cp .env.example .env
    • Edita el archivo .env configurando los datos de tu conexión PDO hacia PostgreSQL.
  3. Ejecución Local (Servidor de Desarrollo)

    composer start
    # o bien:
    php -S localhost:8013 -t public/

Pruebas de Uso

  1. Entra a http://localhost:8013/register.php y regístrate. Por seguridad y buena práctica, el sistema asume que eres un cliente común sin el permiso view_dashboard.
  2. Al ingresar e intentar navegar a http://localhost:8013/dashboard.php, el sistema denegará el acceso.
  3. Puedes entrar a la base de datos y ascender a tu usuario cambiando el role_id = 1 (admin) o role_id = 3 (soporte).
  4. Vuelve a iniciar sesión; ahora el Dashboard cargará sin problema.

En cualquier archivo (ya sea vista o endpoint API), solo requieres el autoload de Composer, session.php, y hacer uso de AuthRbac:

require '../vendor/autoload.php';
require_once __DIR__ . '/../auth/session.php';

use PhpAuth\AuthRbac;

$manager = AuthRbac::getInstance();

// Protege que el usuario esté logueado obligatoriamente
$manager->guard()->requireLogin(); 

// (Opcional) Protege por rol
$manager->guard()->requireRole('admin'); 

// (Opcional) Protege por permiso
$manager->guard()->requireCan('manage_users');