定制 axproo/auth-lib 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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
Email 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 axproo/auth-lib 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 22
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-20