定制 axproo/auth-lib 二次开发

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

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

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
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.

统计信息

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

GitHub 信息

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

其他信息

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