axproo/auth-lib
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.
axproo/auth-lib 适用场景与选型建议
axproo/auth-lib 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 10 月 20 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「mailer」 「form」 「library」 「auth」 「helper」 「otp」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 axproo/auth-lib 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 axproo/auth-lib 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 axproo/auth-lib 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Diese Contao 4 Erweiterung stellt Google reCAPTCHA V2 in Form eines neuen Formularfeldes im Formulargenerator bereit. This extension provides Google reCAPTCHA V2 in the form of a new form field in the form generator of Contao Open Source CMS.
Creates new sare mail transport for laravel applications
Inbox pattern process implementation for your Laravel Applications
A Laravel Filament Forms slug field.
A jQuery augmented PHP library for creating and validating HTML forms
Core library that defines common interfaces used by the rest of the intahwebz..
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 22
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-20