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.
- ✅ 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
Installer avec Composer :
composer require bmvc/bauth<?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);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
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);<?php
use Bmvc\BAuth\Adapters\Laravel\LaravelAuthProvider;
$provider = new LaravelAuthProvider(
$config,
'users'
);
$auth->setAuthProvider($provider);<?php
use Bmvc\BAuth\Adapters\Symfony\SymfonyAuthProvider;
$provider = new SymfonyAuthProvider(
$config,
$entityManager,
App\Entity\User::class
);
$auth->setAuthProvider($provider);<?php
try {
$result = $auth->login(
'user@example.com',
'password123'
);
$user = $result['user'];
$token = $result['token'];
} catch (\Bmvc\BAuth\Exceptions\AuthenticationException $e) {
echo $e->getMessage();
}<?php
if ($auth->isAuthenticated()) {
$user = $auth->user();
echo $user['email'];
}<?php
$auth->logout();<?php
$token = $auth->token();<?php
try {
$payload = $auth->verifyToken($token);
} catch (\Bmvc\BAuth\Exceptions\InvalidTokenException $e) {
echo "Token invalide";
}<?php
$newToken = $auth->refreshToken();BAuth supporte les rôles et permissions via un provider dédié.
<?php
if ($auth->can('posts.edit')) {
echo "Autorisé";
}<?php
if ($auth->hasRole('admin')) {
echo "Administrateur";
}<?php
$auth->authorize('users.delete');BAuth supporte le TOTP pour renforcer la sécurité des comptes utilisateurs.
<?php
if ($auth->verify2FA($code)) {
echo "Code valide";
}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
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
Exécuter les tests :
composer test- Installation
- Configuration
- Authentication
- Authorization
- JWT
- Sessions
- 2FA
- Middleware
- Laravel
- Symfony
- Custom Providers
- Testing
- JWT Authentication
- Roles & Permissions
- 2FA / TOTP
- Session Management
- OAuth2
- Social Login
- API Keys
- Multi-session Management
- WebAuthn / Passkeys
Les contributions sont les bienvenues.
- Fork du projet
- Créer une branche
- Commit des modifications
- Push sur votre fork
- Ouvrir une Pull Request
MIT License
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.