Skip to content

Josuebondo/bAuth

Repository files navigation

BAuth

Une librairie PHP moderne, modulaire et framework-agnostique pour gérer l’authentification, l’autorisation, les sessions, les tokens JWT et la sécurité des utilisateurs dans n’importe quel projet PHP.


PHP License Version JWT 2FA OAuth2 WebAuthn


🚀 Fonctionnalités

  • ✅ Authentification complète
  • ✅ JWT (JSON Web Token)
  • ✅ Sessions sécurisées
  • ✅ Rôles & permissions
  • ✅ Support 2FA / TOTP
  • OAuth2 (Google, GitHub, Facebook, Microsoft)
  • Connexion Sociale
  • Clés API pour applications tierces
  • Sessions Multiples par utilisateur
  • WebAuthn / Passkeys (authentification sans mot de passe)
  • ✅ Compatible Laravel, Symfony et PHP natif
  • ✅ Architecture PSR-4
  • ✅ Framework-agnostique
  • ✅ Extensible via interfaces et providers
  • ✅ Sécurité moderne intégrée

📦 Installation

Installer avec Composer :

composer require bmvc/bauth

⚡ Démarrage rapide

Configuration

<?php

use Bmvc\BAuth\Config;
use Bmvc\BAuth\Auth;

$config = new Config([
    'jwt' => [
        'secret' => env('AUTH_JWT_SECRET'),
        'expiresIn' => 3600,
    ],

    'password' => [
        'algorithm' => PASSWORD_BCRYPT,
        'options' => [
            'cost' => 12,
        ],
    ],
]);

$auth = new Auth($config);

🔌 Fournisseurs d’authentification

BAuth utilise des providers pour communiquer avec votre système utilisateur.

Les providers permettent d’intégrer facilement BAuth avec :

  • PHP natif
  • Laravel
  • Symfony
  • ou n’importe quel framework PHP

PHP natif / projet générique

<?php

use Bmvc\BAuth\Adapters\Generic\GenericAuthProvider;

$provider = new GenericAuthProvider($config);

$provider
    ->setGetUserByEmailCallback(function ($email) {

        return User::where('email', $email)->first();

    })

    ->setGetUserByIdCallback(function ($id) {

        return User::find($id);

    })

    ->setCreateUserCallback(function ($data) {

        return User::create($data);

    });

$auth->setAuthProvider($provider);

Laravel

<?php

use Bmvc\BAuth\Adapters\Laravel\LaravelAuthProvider;

$provider = new LaravelAuthProvider(
    $config,
    'users'
);

$auth->setAuthProvider($provider);

Symfony

<?php

use Bmvc\BAuth\Adapters\Symfony\SymfonyAuthProvider;

$provider = new SymfonyAuthProvider(
    $config,
    $entityManager,
    App\Entity\User::class
);

$auth->setAuthProvider($provider);

🔐 Authentification

Connexion utilisateur

<?php

try {

    $result = $auth->login(
        'user@example.com',
        'password123'
    );

    $user = $result['user'];
    $token = $result['token'];

} catch (\Bmvc\BAuth\Exceptions\AuthenticationException $e) {

    echo $e->getMessage();
}

Vérifier l’utilisateur connecté

<?php

if ($auth->isAuthenticated()) {

    $user = $auth->user();

    echo $user['email'];
}

Déconnexion

<?php

$auth->logout();

🔑 JWT

Obtenir le token actuel

<?php

$token = $auth->token();

Vérifier un token

<?php

try {

    $payload = $auth->verifyToken($token);

} catch (\Bmvc\BAuth\Exceptions\InvalidTokenException $e) {

    echo "Token invalide";
}

Rafraîchir un token

<?php

$newToken = $auth->refreshToken();

🛡️ Autorisation

BAuth supporte les rôles et permissions via un provider dédié.


Vérifier une permission

<?php

if ($auth->can('posts.edit')) {

    echo "Autorisé";
}

Vérifier un rôle

<?php

if ($auth->hasRole('admin')) {

    echo "Administrateur";
}

Autoriser une action

<?php

$auth->authorize('users.delete');

🔒 Authentification à deux facteurs (2FA)

BAuth supporte le TOTP pour renforcer la sécurité des comptes utilisateurs.

<?php

if ($auth->verify2FA($code)) {

    echo "Code valide";
}

🧩 Architecture

src/
├── Auth.php
├── Config.php
│
├── Contracts/
│   ├── AuthProviderInterface.php
│   ├── AuthorizationProviderInterface.php
│   ├── SessionProviderInterface.php
│   ├── TokenProviderInterface.php
│   └── TwoFactorProviderInterface.php
│
├── Providers/
│   ├── BaseAuthProvider.php
│   ├── BaseAuthorizationProvider.php
│   ├── BaseTwoFactorProvider.php
│   ├── JWTProvider.php
│   └── SessionProvider.php
│
├── Support/
│   └── Password.php
│
├── Adapters/
│   ├── Generic/
│   ├── BMVC/
│   ├── Laravel/
│   ├── PDO/
│   └── Symfony/
│
└── Exceptions/
    ├── BAuthException.php
    ├── AuthenticationException.php
    ├── AuthorizationException.php
    ├── InvalidTokenException.php
    └── UserNotFoundException.php

🔐 Sécurité

BAuth applique plusieurs standards modernes de sécurité :

  • bcrypt pour le hashage des mots de passe
  • JWT signés avec HMAC SHA-256
  • validation stricte des tokens
  • support du 2FA TOTP
  • protection contre les replay attacks
  • architecture PSR-4 sécurisée et extensible

🧪 Tests

Exécuter les tests :

composer test

📚 Documentation

Guides disponibles

  • Installation
  • Configuration
  • Authentication
  • Authorization
  • JWT
  • Sessions
  • 2FA
  • Middleware
  • Laravel
  • Symfony
  • Custom Providers
  • Testing

🛣️ Roadmap

  • JWT Authentication
  • Roles & Permissions
  • 2FA / TOTP
  • Session Management
  • OAuth2
  • Social Login
  • API Keys
  • Multi-session Management
  • WebAuthn / Passkeys

🤝 Contribution

Les contributions sont les bienvenues.

  1. Fork du projet
  2. Créer une branche
  3. Commit des modifications
  4. Push sur votre fork
  5. Ouvrir une Pull Request

📄 Licence

MIT License


💡 Vision du projet

BAuth a pour objectif d’offrir :

  • la simplicité de Laravel Auth
  • la flexibilité de Symfony Security
  • l’indépendance d’une librairie standalone
  • une architecture moderne, modulaire et extensible

Le tout dans une seule librairie PHP légère, performante et professionnelle.

About

librairie php d'authentification

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages