axproo/auth-lib
最新稳定版本:1.1.7
Composer 安装命令:
composer require axproo/auth-lib
包简介
Bibliothèque d'authentification complète et réutilisable pour CI4.
README 文档
README
Une librairie PHP légère et réutilisable pour la gestion de l’authentification basée sur JSON Web Token (JWT). Elle peut être utilisée seule ou intégrée dans un projet CodeIgniter 4 et PHP standalone.
🚀 Fonctionnalités
- 🔐 Génération de tokens JWT d’accès et de rafraîchissement.
- ✅ Validation et décodage sécurisés des tokens.
- ⚙️ Configuration dynamique à partir d’un fichier .env.
- 🧱 Compatible PHP pur ou CodeIgniter 4.
- ♻️ Réutilisable comme package Composer dans d’autres projets.
📦 Structure du projet
auth-lib/ ├── src/ │ ├── Services/ │ │ ├── AuthService.php │ │ ├── TokenManager.php │ │ └── PasswordHasher.php │ ├── Models/ | | ├── RuleModel.php | | └── UserModel.php │ ├── Entities/ | | ├── RoleEntity.php | | └── UserEntity.php │ └── Configs/ ├── tests/ │ └── AuthTest.php ├── composer.json └── phpunit.xml
⚙️ Installation
1. Utilisation en local (développement)
Clonez le dépôt :
git clone https://github.com/axproo/auth-lib.git
cd auth-lib
composer install
2. Ajout à un projet CodeIgniter 4
Ajoutez dans le composer.json de votre projet :
"repositories": [ { "type": "vcs", "url": "https://github.com/axproo/auth-lib.git" } ], "require": { "axproo/auth-lib": "dev-main" }
Puis exécutez :
composer update
🔑 Configuration
Créez un fichier .env à la racine de votre projet ou du répertoire auth-lib :
#--------------------------------------------------------------------
# JWT
#--------------------------------------------------------------------
JWT_SECRET=ma_cle_super_secrete
JWT_REFRESH_SECRET=ma_cle_refresh_encore_plus_secrete
JWT_EXPIRE=3600
#--------------------------------------------------------------------
# Cookie Security
# HTTP = false, HTTPS = true
#--------------------------------------------------------------------
SECURE_COOKIE = false
Pour générer un jwt secret, faire ceci: Avec OpenSSL
echo "JWT_SECRET=$(openssl rand -base64 32)" >> .env
Génère une clé Base64 de 32 octets et l’ajoute à la fin du fichier .env. Si tu veux remplacer l’ancienne valeur si elle existe :
sed -i '/^JWT_SECRET=/d' .env && echo "JWT_SECRET=$(openssl rand -base64 32)" >> .env
💡 Astuce : toujours vérifier le contenu du .env après insertion :
cat .env | grep JWT_SECRET
⚠️ Si vous testez la librairie seule (en dehors de CodeIgniter 4), la classe Auth chargera automatiquement ce fichier .env.
💻 Utilisation
Exemple rapide dans test.php
<?php require __DIR__ . '/vendor/autoload.php'; use Axproo\Auth\TokenManager; // Initialisation $tokenManager = new TokenManager(); // Génération d’un token $token = $tokenManager->generateToken(['user_id' => 1, 'role' => 'admin']); echo "Token généré : $token\n"; // Validation $decoded = $tokenManager->validateToken($token); echo "Décodé : "; print_r($decoded);
🧠 Concepts clés
| Élément | Description |
|---|---|
TokenManager |
Classe principale de gestion des JWT |
generateToken() |
Crée un token d’accès avec durée définie |
generateRefreshToken() |
Rafraichir la durée du token d'accès |
validateToken() |
Vérifie la validité d’un token |
renewToken() |
Renouveller le token d'accès |
.env |
Contient les clés et durées configurables |
🧪 Tests
Pour tester la librairie seule :
php test.php
Résultat attendue :
Token généré : eyJ0eXAiOiJKV1QiLCJh... Décodé : stdClass Object ( [user_id] => 1 [role] => admin [iat] => ... [exp] => ... )
La librairie Axproo Auth peut être testée localement avant intégration dans un projet existant. Si vous souhaitez tester les fonctionnalités avec des données réelles (utilisateurs, rôles, etc.), suivez les étapes suivantes
1️⃣ Exécuter les migrations
Créez les tables nécessaires à l’authentification dans votre base de données, vous pouvez également vous reférer à la librairie Axproo DataBase-lib pour installer les tables par défaut :
php spark migrate --all
2️⃣ (Optionnel) Exécuter les seeders
Pour charger des données de test (utilisateur admin, rôles, etc.), commencez par ajouter les données dans vos tables avec la commande Seeder, ex:
php spark make:seeder role --suffix php spark make:seeder user --suffix php spark make:seeder tenant --suffix
Exemple de fichier RoleSeeder
$data = [ [ 'role_name' => 'superadmin', 'description' => 'Administrateur avec tous les super privilèges' ], [ 'role_name' => 'admin', 'description' => 'Administrateur avec tous les privilèges' ], [ 'role_name' => 'user', 'description' => 'Utilisateurs avec droits limités' ], ]; $builder = $this->db->table('rules'); foreach ($data as $row) { $exists = $builder ->where('role_name', $row['role_name']) ->get()->getRow(); if (!$exists) { $builder->insert($row); } }
puis exécutez :
php spark db:seed Axproo\\Auth\\Database\\Seeders\\RoleSeeder php spark db:seed Axproo\\Auth\\Database\\Seeders\\UserSeeder php spark db:seed Axproo\\Auth\\Database\\Seeders\\TenantSeeder
3️⃣ Lancer les tests unitaires (si installés)
Si vous avez activé PHPUnit :
vendor/bin/phpunit
4️⃣ Connexion à l’aide des données seedées
Vous pouvez ensuite tester la connexion via :
$auth = new \Axproo\Auth\Services\AuthService(); $response = $auth->login(); print_r($response);
Activation de compte via un code OTP
générer un formulaire avec FormBuilder
use Axproo\Auth\Helpers\FormBuilder; $fields = ['email']; $overrides = []; $form = new FormBuilder('/generate'); print_r($form->build($fields, $overrides));
Identifian de connexion par défaut
Lors de la première connexion, une utilisation de démonstration est automatiquement insérée en base de données.
| Champ | Valeur |
|---|---|
john_doe@company1.com |
|
| Mot de passe | demo_admin@123 |
⚠️ Ces identifiants sont uniquement destinés aux tests. Pensez à les modifier ou les supprimer en production.
Exemple d'utilisation avec FormBuilder
Vous pouvez rapidement générer un formulaire de connexion dynamique à l’aide du FormBuilder intégré :
use Axproo\Auth\Helpers\FormBuilder; // Définition des champs du formulaire $fields = ['email', 'password']; // Exemple : ['email','password'] // Personnalisation du rendu ou des contraintes, par défaut les champs email et password sont require $overrides = [ 'email' => ['isLabel' => false], 'password' => ['required' => true] ]; // Création du formulaire de connexion $form = new FormBuilder('/login'); // URL cible du formulaire print_r($form->build($fields, $overrides));
Gestion des formulaires dynamiques
Pour la gestion des formulaires statiques et dynamique, veuillez installer le repo AXPROO Form Library github.
"repositories": [ { "type": "vcs", "url": "https://github.com/axproo/form-lib.git" } ]
Puis executer
composer require axproo/form-lib:dev-main
Consulter la documentation (README.md) du repo Axproo Form Library pour plus de details.
🔒 Bonnes pratiques
- Ne jamais committer le .env dans le dépôt public.
- Toujours utiliser une clé forte et unique pour JWT_SECRET.
- Régénérer régulièrement vos clés.
- Utiliser HTTPS pour toutes les requêtes liées à l’authentification.
🤝 Contributeurs
- Christian Djomou — Fondateur & Développeur principal
- AXPROO Team — Cybersécurité & Infrastructure
📄 Licence
Ce projet est sous licence MIT. Vous êtes libre de l’utiliser, le modifier et le redistribuer avec mention de l’auteur.
🧷 Liens utiles
- 🔗 CodeIgniter 4 Documentation
- 🔗 Firebase PHP JWT
© 2025 AXPROO — Tous droits réservés.
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-20