PHPackages                             juanvladimir13/phpauth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. juanvladimir13/phpauth

ActiveLibrary

juanvladimir13/phpauth
======================

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

v0.0.4(yesterday)05↑2900%MITPHP ^8.3

Since Jul 19Compare

[ Source](https://github.com/juanvladimir13/phpauth)[ Packagist](https://packagist.org/packages/juanvladimir13/phpauth)[ Docs](https://juanvladimir13.web.app/)[ RSS](/packages/juanvladimir13-phpauth/feed)WikiDiscussions Synced today

READMEChangelogDependencies (6)Versions (5)Used By (0)

PHP Authentication &amp; Authorization System
=============================================

[](#php-authentication--authorization-system)

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

Funcionalidades
---------------

[](#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
-----------------------

[](#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
-----------

[](#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
--------------

[](#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');
```

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance100

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5018770?v=4)[Juan Vladimir](/maintainers/juanvladimir13)[@juanvladimir13](https://github.com/juanvladimir13)

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/juanvladimir13-phpauth/health.svg)

```
[![Health](https://phpackages.com/badges/juanvladimir13-phpauth/health.svg)](https://phpackages.com/packages/juanvladimir13-phpauth)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
