Download the PHP package moko-github/kerberos-auth without Composer
On this page you can find all versions of the php package moko-github/kerberos-auth. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download moko-github/kerberos-auth
More information about moko-github/kerberos-auth
Files in moko-github/kerberos-auth
Package kerberos-auth
Short Description Kerberos SSO authentication package for Laravel (REMOTE_USER, demande d'acces, mode simulation)
License proprietary
Informations about the package kerberos-auth
kerberos-auth
Package Laravel d'authentification SSO Kerberos via la variable serveur REMOTE_USER.
Fonctionnalités
- Authentification automatique via
REMOTE_USER(Apache/Nginx Kerberos) - Gestion des demandes d'accès pour les comptes sans rôle
- Mode simulation pour les environnements de développement
- Composants Livewire inclus (access-denied, request-access, simulate-kerberos, simulation-banner)
- Migrations, seeders et commandes artisan inclus
Prérequis
Sur votre modèle utilisateur et votre application :
- Trait
Illuminate\Notifications\Notifiablesur le modèle User — requis pour l'envoi des notifications admin (nouvelle demande d'accès, tentative inconnue). - Table
notificationsmigrée (php artisan notifications:table && php artisan migrate) — la notification de nouvelle demande d'accès utilise le canaldatabase. - Colonne
remember_tokensur la tableusers(présente par défaut dans Laravel) sikerberos.remember_loginest àtrue(défaut). Sinon, passez-la àfalse. - Un worker de file d'attente (
php artisan queue:work) — les notifications implémententShouldQueueet sont poussées sur la filenotifications. - Routes nommées
dashboardetlogin(ou configurées viakerberos.redirects, voir Configuration).
Installation
1. Dévelopement sur le package avec dependance projet, déclarer le dépôt dans composer.json
Développement (chemin local) :
2. Installer le package
3. Lancer l'installateur
Sans option, la commande pose deux questions interactives. Sans réponse, les valeurs par défaut (entre crochets) s'appliquent.
La question sur les rôles est posée avant les migrations, ce qui garantit que la colonne role_id n'est ajoutée à la table users que si vous en avez besoin.
Cette commande effectue automatiquement :
- Ajout des middlewares dans
bootstrap/app.php - Ajout du champ
kerberos(etrole_idsi rôles activés) dansapp/Models/User.php - Ajout des routes dans
routes/web.php - Configuration du scheduler dans
routes/console.php - Ajout des variables d'environnement dans
.env - Exécution des migrations et des seeders (selon les réponses)
Toutes les étapes sont idempotentes : relancer
kerberos:installne duplique rien. Si une injection automatique échoue, un message⚠indique les lignes à ajouter manuellement.
Options de la commande
| Option | Effet |
|---|---|
| (aucune) | Questions interactives |
--no-roles |
Ignore le système de rôles (migration roles + role_id + RolesSeeder) |
--no-seed |
Ignore tous les seeders sans poser de question (les migrations s'exécutent quand même) |
Les flags ont la priorité sur les clés de config
install.run_seedersetinstall.seed_roles.
Seeders
RolesSeeder
Crée deux rôles en base : Admin et User.
Exécuté uniquement si vous avez répondu oui à la question sur le système de rôles (ou si --no-roles n'est pas passé). À ignorer si vous utilisez un autre système de rôles (Spatie Permission, rôles personnalisés, etc.).
KerberosSetupSeeder
Crée un compte administrateur de test ([email protected] / password) avec l'identifiant Kerberos [email protected], et assigne le rôle User aux utilisateurs existants sans rôle.
À utiliser pour initialiser la base lors d'une première installation. À ignorer (--no-seed) si vous gérez vos propres données initiales.
Note : si
App\Enums\UserStatusexiste dans l'application, le compte admin est créé avec le statutACTIVE.
Configuration
Publiez le fichier de configuration pour le personnaliser :
Cela crée config/kerberos.php dans votre application.
Modèle utilisateur
Le package ne présume pas que votre modèle utilisateur est App\Models\User.
Il le résout automatiquement dans cet ordre :
config('kerberos.user_model')(override explicite)config('auth.providers.users.model')(défaut Laravel)App\Models\User(dernier recours)
Aucune configuration n'est nécessaire dans la majorité des cas. Pour forcer un modèle spécifique :
Routes de redirection
Le package redirige vers des routes nommées de votre application. Par défaut
dashboard (après login réussi) et login (accès refusé, fin de simulation, etc.).
Si vos routes portent d'autres noms :
ou via .env : KERBEROS_SUCCESS_ROUTE et KERBEROS_LOGIN_ROUTE.
Variables d'environnement
KERBEROS_FALLBACK_AUTH=falseimpose Kerberos : une requête sans ticket reçoit un403. Avectrue(défaut), l'utilisateur sans ticket atteint le formulaire de connexion classique de votre application.Notifications admin : avec
KERBEROS_ADMIN_EMAILSrenseigné, les emails sont envoyés directement à ces adresses (mail on-demand, même sans compte User). Sinon, les utilisateurs portant le rôleKERBEROS_ADMIN_ROLEsont notifiés. Si vous utilisez une stratégie de rôlerelation/callable, privilégiezKERBEROS_ADMIN_EMAILS.
Routes exclues
Par défaut, le middleware Kerberos exclut automatiquement ces routes :
access-denied, access-request.create, access-request.store, logout, livewire.*
Pour ajouter vos propres exclusions :
Layout des pages Kerberos
Les pages /demande-acces et /acces-refuse utilisent par défaut le layout minimal embarqué dans le package (kerberos-auth::layouts.guest) — une page blanche centrée qui ne nécessite que Tailwind CSS.
Pour utiliser le layout de votre application :
Pour personnaliser le layout du package :
Stratégie de vérification des rôles
Définit comment le package détermine qu'un utilisateur est autorisé à se connecter.
Un utilisateur qui échoue ce contrôle reçoit le statut NO_ROLE et est redirigé vers le formulaire de demande d'accès.
strategy: 'column' (défaut)
Vérifie une colonne du modèle User avec un opérateur.
operator |
Condition d'accès | Cas d'usage typique |
|---|---|---|
is_not_null |
$user->role_id !== null |
Système mono-rôle (FK) |
is_null |
$user->deleted_at === null |
Soft-delete comme garde d'accès |
strategy: 'relation'
strategy: 'callable'
La classe doit implémenter MokoGithub\KerberosAuth\Contracts\UserAccessCheckInterface :
Seeders (via config)
Composants Livewire
<livewire:auth.access-denied />
Affiché quand un identifiant Kerberos est inconnu du système.
Route : GET /acces-refuse → access-denied
<livewire:auth.request-access />
Formulaire pour les utilisateurs reconnus mais sans rôle.
Route : GET /demande-acces → access-request.create
<livewire:auth.simulate-kerberos />
Interface de simulation réservée au développement. Prérequis : KERBEROS_SIMULATION_MODE=true.
<livewire:auth.simulation-banner />
Bannière visible quand une simulation est active. À placer dans le layout principal.
Personnalisation des vues
Copie dans resources/views/vendor/kerberos-auth/ :
Internationalisation (i18n)
Le package embarque des fichiers de traduction pour l'anglais (en) et le français (fr).
Par défaut, Laravel utilise la locale de config('app.locale').
Passer le package en français
Dans config/app.php :
Toutes les chaînes du package (notifications mail, messages flash, validation, vues Blade) s'afficheront automatiquement en français.
Publier et personnaliser les traductions
Copie dans lang/vendor/kerberos-auth/ :
Les fichiers publiés prennent le dessus sur ceux du package. Modifiez-les pour adapter les messages à votre contexte (ton, vocabulaire interne, langue tierce).
Note : Les traductions du package sont chargées sous le namespace
kerberos-auth. Les clés suivent la structurekerberos-auth::kerberos.<section>.<clé>, par exemplekerberos-auth::kerberos.flash.simulation_disabled.
Développement & tests
Les tests s'appuient sur Orchestra Testbench + Pest, avec une base SQLite en
mémoire et un modèle utilisateur de fixture (tests/Fixtures/User.php).
La CI (.github/workflows/ci.yml) exécute Pint, PHPStan et Pest sur PHP 8.2 / 8.3 / 8.4.