Table des matières
AuthLaravel : Sessions, rôles et pages Inertia
AuthLaravel est un projet d’apprentissage du contrôle d’accès avec Laravel et des pages Vue servies par Inertia. Les routes montrent comment les utilisateurs authentifiés accèdent au tableau de bord et comment les administrateurs obtiennent une vue différente.
- Langages
- 5Répartition du code
- Composants documentés
- 2Explorer les modules
- Documents source
- 2Lire les instructions
Langages du dépôtPHP 53.63%5
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| PHP | 143 951 | |
| TypeScript | 94 085 | |
| Blade | 29 335 | |
| JavaScript | 999 | |
| CSS | 59 |
1. Aperçu
1.1. Pourquoi il existe
Modèle d'authentification Laravel implémentant JWT, sessions et politiques de rôles.
1.2. Cas d’usage
Socle d'authentification robuste pour projets et API Laravel.
2. Cas d’utilisation
Appli de labo Laravel 10 et React (Inertia) pour le cours GTI619 de l’ÉTS : rôles, limitation des connexions, mots de passe.
- Créer un compte
- Utilisateur inscrit
RegisteredUserController enregistre un nouvel utilisateur avec courriel, nom d’utilisateur, téléphone et mot de passe ; le formulaire est resources/js/Pages/Auth/Register.tsx.
- Se connecter avec limitation
- Utilisateur inscritAdministrateur
LoginRequest bloque une paire courriel et IP après 5 échecs et enregistre login_attempts, navigateur, OS, IP et last_login dans la fiche de l’utilisateur.
- Réinitialiser le mot de passe
- Utilisateur inscritMailpit (courriel dev)
Les routes forgot-password envoient un lien de réinitialisation par courriel ; dans l’environnement Sail, Mailpit l’intercepte et l’affiche sur le port 8025.
- Changer profil et mot de passe
- Utilisateur inscrit
PUT /password passe par PasswordController, et /profile permet de modifier ou supprimer le compte via ProfileController.
- Voir les comptes (admin)
- Administrateur
/admin passe par le middleware AdminAuthenticated, et /dashboard affiche AdminDashboard.tsx avec le courriel, les rôles et les permissions de chaque compte si le rôle est roles:admin ; les autres rôles voient le tableau de bord simple.
2.1. Scénario : Lancer le labo et tester l’accès par rôle
- Depuis AuthLaravel/, lancer ./vendor/bin/sail up -d pour démarrer l’application avec MariaDB, Redis et Mailpit.
- Lancer ./vendor/bin/sail artisan migrate puis db:seed pour créer les comptes admin, user, residential et business.
- Ouvrir http://localhost/login et se connecter avec [email protected] pour voir la table des comptes.
- Se connecter avec [email protected] et ouvrir /admin ; le middleware renvoie vers le tableau de bord.
- Utiliser Forgot password et lire le courriel de réinitialisation dans Mailpit sur http://localhost:8025.
Fichiers consultésREADME.mdAuthLaravel/routes/web.phpAuthLaravel/routes/auth.phpAuthLaravel/app/Http/Requests/Auth/LoginRequest.phpAuthLaravel/app/Http/Middleware/AdminAuthenticated.phpAuthLaravel/database/seeders/DatabaseSeeder.phpAuthLaravel/database/migrations/2023_04_08_225131_add_roles_column_to_users.phpAuthLaravel/docker-compose.ymlAuthLaravel/composer.jsonAuthLaravel/package.json
3. Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
./vendor/bin/sail up -d
npm build
./vendor/bin/sail artisan migrate
./vendor/bin/sail artisan db:seed
http://localhost/login
email: http://localhost:8025./vendor/bin/sail up -d
npm build
./vendor/bin/sail artisan migrate
./vendor/bin/sail artisan db:seed
http://localhost/login
email: http://localhost:8025Commandes déclarées dans les manifestes
3.1. AuthLaravel/package.json
devvitebuildtsc && vite build && vite build --ssr
4. Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
4.1. Requirements
README.md
- Docker
- Docker Compose
- Node.js
- NPM
- PHP 8.1.2
- Composer
5. Fonctions et composants 2
- Routes et middleware
- La route du tableau de bord utilise auth et verified, puis vérifie le rôle admin. Cette branche charge les utilisateurs et affiche AdminDashboard; les autres utilisateurs reçoivent Dashboard. La route /admin déclare son propre middleware.
- Pages et gestion du compte
- Inertia relie les décisions des routes serveur aux pages frontend. ProfileController gère les modifications du profil, tandis que les routes de réinitialisation utilisent le mécanisme de mots de passe de Laravel. L’authentification et le choix de page restent deux opérations distinctes.
6. Architecture
Ouvrez un composant pour suivre ses connexions, ou explorez le diagramme complet.
Requête du navigateur
- Vers Middleware Laravel
Middleware Laravel
- Depuis Requête du navigateur
- Vers Rôle et logique de route
Rôle et logique de route
- Depuis Middleware Laravel
- Vers Réponse Inertia
Réponse Inertia
- Depuis Rôle et logique de route
- Vers Page Vue
Page Vue
- Depuis Réponse Inertia
Mermaid Diagramme interactif
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
node_visitor(("Browser user"))
subgraph group_client["Inertia client"]
node_inertia_middleware["Inertia request props"]
node_client_app["Inertia application<br/>[app.tsx]"]
node_auth_pages["Authentication pages<br/>[Login.tsx]"]
node_profile_page["Profile screen<br/>[Edit.tsx]"]
node_role_pages["Role dashboards and customer lists"]
end
subgraph group_routing["Request routing"]
node_web_routes["Web routes<br/>[web.php]"]
node_auth_routes["Auth routes<br/>[auth.php]"]
node_http_kernel["HTTP middleware<br/>[Kernel.php]"]
end
subgraph group_account["Account services"]
node_profile["Profile management"]
node_email_verification["Email verification"]
node_verification_notice["Verification prompts"]
node_verification_email["Verification email"]
node_provider_login["Provider sign-in"]
end
subgraph group_identity["Identity and access"]
node_login["Login handler"]
node_login_request["Login validation<br/>[LoginRequest.php]"]
node_registration["Registration handler"]
node_role_guard["Admin role guard"]
node_user["User identity model<br/>[User.php]"]
node_user_store[("User persistence<br/>[User.php]")]
end
node_visitor -.->|"requests pages"| node_web_routes
node_web_routes -->|"loads routes"| node_auth_routes
node_login -->|"authenticates with"| node_login_request
node_login_request -->|"uses identity"| node_user
node_registration -->|"creates account"| node_user
node_profile -->|"updates account"| node_user
node_client_app -->|"resolves pages"| node_auth_pages
node_client_app -->|"resolves pages"| node_profile_page
node_client_app -->|"resolves pages"| node_role_pages
node_user -.->|"persists records"| node_user_store
node_visitor -.->|"uses role pages"| node_role_pages
group_routing --> group_identity
group_routing --> group_account
class node_web_routes,node_auth_routes,node_http_kernel,node_visitor toneBlue
class node_login,node_login_request,node_registration,node_role_guard,node_user,node_user_store toneAmber
class node_profile,node_email_verification,node_verification_notice,node_verification_email,node_provider_login toneMint
class node_inertia_middleware,node_client_app,node_auth_pages,node_profile_page,node_role_pages toneRose
Une application Laravel et Inertia pour l’accès aux comptes et l’administration par rôles. Les routes relient la connexion, l’inscription, les profils, la vérification du courriel, la récupération du mot de passe et la connexion par fournisseur au modèle utilisateur et aux écrans Inertia.
- Composants
- 20
- Connexions
- 19
- Liens appuyés par le code
- 16/19
Version texte du diagramme
Le diagramme regroupe les liens parallèles entre groupes : il en montre 13 sur 19. Liste complète :
- Browser user → Web routes (requests pages)
- Web routes → Auth routes (loads routes)
- Auth routes → Login handler (routes login)
- Auth routes → Registration handler (routes registration)
- Login handler → Login validation (authenticates with)
- Login validation → User identity model (uses identity)
- Registration handler → User identity model (creates account)
- Web routes → Profile management (routes profile)
- Profile management → User identity model (updates account)
- Auth routes → Email verification (routes verification)
- Auth routes → Verification prompts (routes prompt)
- Auth routes → Verification email (routes notification)
- Inertia application → Authentication pages (resolves pages)
- Inertia application → Profile screen (resolves pages)
- Inertia application → Role dashboards and customer lists (resolves pages)
- User identity model → User persistence (persists records)
- Auth routes → Provider sign-in (optional sign-in)
- HTTP middleware → Admin role guard (registers middleware)
- Browser user → Role dashboards and customer lists (uses role pages)
Suivre un parcours dans le code
Comparez /dashboard et /admin dans routes/web.php. Les deux choisissent une page administrative, mais leurs middleware diffèrent. Il faut aussi vérifier les autorisations sur les opérations de données, au-delà de la navigation.
7. Dossier technique
Établi à partir du code au commit 2ec4e5d (121 fichiers). Chaque élément vient d’une correspondance de motif dans le code: ouvrez le fichier lié avant de vous y fier.
7.1. Couches et modules
Les dossiers sont classés par couche selon leur nom, de l’interface utilisateur jusqu’à l’accès aux données. Comme le classement repose sur les noms seulement, le diagramme ne dit rien des appels entre couches.
Mermaid Vue en couches
flowchart TB
subgraph L_presentation["Présentation"]
direction TB
presentation_0["AuthLaravel/resources<br/>34 fichiers"]
presentation_1["AuthLaravel<br/>1 fichier"]
presentation_2["AuthLaravel/Console<br/>1 fichier"]
presentation_3["AuthLaravel/public<br/>1 fichier"]
end
subgraph L_interface["Points d’entrée et API"]
direction TB
interface_0["AuthLaravel/Http<br/>27 fichiers"]
interface_1["AuthLaravel/routes<br/>5 fichiers"]
interface_2["AuthLaravel/bootstrap<br/>1 fichier"]
interface_3["AuthLaravel/config<br/>1 fichier"]
end
subgraph L_application["Services applicatifs"]
direction TB
application_0["AuthLaravel/Exceptions<br/>1 fichier"]
application_1["AuthLaravel/config<br/>1 fichier"]
end
subgraph L_domain["Domaine et règles métier"]
direction TB
domain_0["AuthLaravel/resources<br/>3 fichiers"]
domain_1["AuthLaravel/Models<br/>1 fichier"]
end
subgraph L_infrastructure["Données et infrastructure"]
direction TB
infrastructure_0["AuthLaravel/database<br/>10 fichiers"]
infrastructure_1["AuthLaravel/Providers<br/>5 fichiers"]
infrastructure_2["AuthLaravel/config<br/>2 fichiers"]
end
subgraph L_core["Source principale"]
direction TB
core_0["AuthLaravel/config<br/>11 fichiers"]
core_1["AuthLaravel<br/>3 fichiers"]
core_2["AuthLaravel/resources<br/>1 fichier"]
end
subgraph L_tests["Tests"]
direction TB
tests_0["AuthLaravel<br/>12 fichiers"]
end
subgraph L_hosting["Build, CI et hébergement"]
direction TB
hosting_0["AuthLaravel<br/>1 fichier"]
end
L_presentation ~~~ L_interface
L_interface ~~~ L_application
L_application ~~~ L_domain
L_domain ~~~ L_infrastructure
L_infrastructure ~~~ L_core
L_core ~~~ L_tests
L_core ~~~ L_hosting
| Module | Couche | Fichiers | Types | Extensions |
|---|---|---|---|---|
AuthLaravel/resources | Présentation | 38 | 0 | .tsx .ts .php |
AuthLaravel/Http | Points d’entrée et API | 27 | 27 | .php |
AuthLaravel/config | Source principale | 15 | 0 | .php |
AuthLaravel/database | Données et infrastructure | 10 | 6 | .php |
AuthLaravel/Providers | Données et infrastructure | 5 | 5 | .php |
AuthLaravel/routes | Points d’entrée et API | 5 | 0 | .php |
AuthLaravel | Source principale | 4 | 0 | .js .xml |
AuthLaravel/Console | Présentation | 1 | 1 | .php |
AuthLaravel/Exceptions | Services applicatifs | 1 | 1 | .php |
AuthLaravel/Models | Domaine et règles métier | 1 | 1 | .php |
AuthLaravel/bootstrap | Points d’entrée et API | 1 | 0 | .php |
AuthLaravel/public | Présentation | 1 | 0 | .php |
7.2. Modèle C4
Du contexte du système aux déclarations du code. Chaque niveau conserve les limites des sources disponibles.
UML 1 · Contexte du système
La vue C4 la plus large : qui utilise le projet et sur quels systèmes et stockages externes il s’appuie. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
Person(P_http, "Client HTTP")
System(SYS, "AuthLaravel", "AuthLaravel est un projet d’apprentissage du contrôle d’accès avec La…")
System_Ext(E0, "AWS")
SystemDb(D0, "Eloquent ORM")
Rel(P_http, SYS, "Utilise")
Rel(SYS, E0, "Appelle")
Rel(SYS, D0, "Lit et écrit")
@enduml
UML 2 · Conteneurs
Un niveau plus près : les parties qui s’exécutent séparément dans le projet, leur langage principal et le chemin des appels entre elles. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Container>
LAYOUT_LEFT_RIGHT()
Person(P_http, "Client HTTP")
System_Boundary(SYS, "AuthLaravel") {
Container(APP, "AuthLaravel", "PHP")
ContainerDb(DB0, "Eloquent ORM", "")
}
System_Ext(E0, "AWS")
Rel(P_http, APP, "Utilise")
Rel(APP, DB0, "Lit et écrit")
Rel(APP, E0, "Appelle")
@enduml
UML 3 · Composants et couches
Modules regroupés par couche du code. Les limites indiquent l’organisation, sans affirmer une isolation à l’exécution ni des appels. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "AuthLaravel") {
Boundary(L0, "Présentation", "layer") {
Component(M0_0, "AuthLaravel/resources", "React, PHP, .css", "34 fichiers")
Component(M0_1, "AuthLaravel", ".xml", "1 fichiers")
Component(M0_2, "AuthLaravel/Console", "PHP", "1 fichiers")
Component(M0_3, "AuthLaravel/public", "PHP", "1 fichiers")
}
Boundary(L1, "Points d’entrée et API", "layer") {
Component(M1_0, "AuthLaravel/Http", "PHP", "27 fichiers")
Component(M1_1, "AuthLaravel/routes", "PHP", "5 fichiers")
Component(M1_2, "AuthLaravel/bootstrap", "PHP", "1 fichiers")
Component(M1_3, "AuthLaravel/config", "PHP", "1 fichiers")
}
Boundary(L2, "Services applicatifs", "layer") {
Component(M2_0, "AuthLaravel/Exceptions", "PHP", "1 fichiers")
Component(M2_1, "AuthLaravel/config", "PHP", "1 fichiers")
}
Boundary(L3, "Domaine et règles métier", "layer") {
Component(M3_0, "AuthLaravel/resources", "TypeScript", "3 fichiers")
Component(M3_1, "AuthLaravel/Models", "PHP", "1 fichiers")
}
Boundary(L4, "Données et infrastructure", "layer") {
Component(M4_0, "AuthLaravel/database", "PHP", "10 fichiers")
Component(M4_1, "AuthLaravel/Providers", "PHP", "5 fichiers")
Component(M4_2, "AuthLaravel/config", "PHP", "2 fichiers")
}
Boundary(L5, "Source principale", "layer") {
Component(M5_0, "AuthLaravel/config", "PHP", "11 fichiers")
Component(M5_1, "AuthLaravel", "JavaScript", "3 fichiers")
Component(M5_2, "AuthLaravel/resources", "TypeScript", "1 fichiers")
}
Boundary(L6, "Tests", "layer") {
Component(M6_0, "AuthLaravel", "PHP", "12 fichiers")
}
Boundary(L7, "Build, CI et hébergement", "layer") {
Component(M7_0, "AuthLaravel", ".yml", "1 fichiers")
}
}
@enduml
UML 4 · Code
Déclarations, champs et méthodes sélectionnés, regroupés par fichier source. Aucun héritage ni appel n’est déduit. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "AuthLaravel" {
package "AuthLaravel/app/Http/Requests/Auth/LoginRequest.php" as F0 {
class "LoginRequest" as T0_0 {
authorize()
rules()
authenticate()
ensureIsNotRateLimited()
throttleKey()
prepareForValidation()
}
}
package "AuthLaravel/database/migrations/2023_04_08_230444_add_2fa_column_to_users.php" as F1 {
class "Add2FAColumnToUsers" as T1_0 {
up()
down()
}
}
package "AuthLaravel/app/Http/Middleware/HandleInertiaRequests.php" as F2 {
class "HandleInertiaRequests" as T2_0 {
version()
share()
}
}
package "AuthLaravel/database/factories/UserFactory.php" as F3 {
class "UserFactory" as T3_0 {
definition()
unverified()
}
}
package "AuthLaravel/app/Models/User.php" as F4 {
class "User" as T4_0 {
name
username
email
phone
roles
permissions
password
provider
}
}
}
@enduml
7.3. Flux de données
Les appels du diagramme GitDiagram, dans l’ordre où on les rencontre depuis les points d’entrée. GitDiagram produit ce graphe par IA; les chemins de fichiers cités ont été comparés à l’arbre du dépôt.
Mermaid Diagramme de séquence
sequenceDiagram
autonumber
participant P0 as HTTP middleware
participant P1 as Admin role guard
participant P2 as Inertia application
participant P3 as Authentication pages
participant P4 as Profile screen
participant P5 as Role dashboards and customer li…
participant P6 as Browser user
participant P7 as Web routes
participant P8 as Auth routes
participant P9 as Profile management
participant P10 as Login handler
participant P11 as Registration handler
participant P12 as Email verification
participant P13 as Verification prompts
participant P14 as Verification email
participant P15 as Provider sign-in
participant P16 as User identity model
participant P17 as Login validation
P0->>P1: registers middleware
P2->>P3: resolves pages
P2->>P4: resolves pages
P2->>P5: resolves pages
P6--)P7: requests pages
P6--)P5: uses role pages
P7->>P8: loads routes
P7->>P9: routes profile
P8->>P10: routes login
P8->>P11: routes registration
P8->>P12: routes verification
P8->>P13: routes prompt
P8->>P14: routes notification
P8--)P15: optional sign-in
P9->>P16: updates account
P10->>P17: authenticates with
Étapes en texte
- HTTP middleware vers Admin role guard registers middleware
- Inertia application vers Authentication pages resolves pages
- Inertia application vers Profile screen resolves pages
- Inertia application vers Role dashboards and customer lists resolves pages
- Browser user vers Web routes requests pages
- Browser user vers Role dashboards and customer lists uses role pages
- Web routes vers Auth routes loads routes
- Web routes vers Profile management routes profile
- Auth routes vers Login handler routes login
- Auth routes vers Registration handler routes registration
- Auth routes vers Email verification routes verification
- Auth routes vers Verification prompts routes prompt
- Auth routes vers Verification email routes notification
- Auth routes vers Provider sign-in optional sign-in
- Profile management vers User identity model updates account
- Login handler vers Login validation authenticates with
- Registration handler vers User identity model creates account
- User identity model vers User persistence persists records
- Login validation vers User identity model uses identity
7.4. Interface publique
Du code extérieur peut utiliser tout ce qui est listé ici. Le projet déclare aussi 41 types publics.
UML Cas d’utilisation
Chaque acteur est un type d’appelant, relié à ce qu’il peut demander au projet. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
left to right direction
actor "Client HTTP" as A_http
rectangle "AuthLaravel" {
usecase "GET/POST /forgot-password (4 routes)" as U0
usecase "GET/POST /reset-password (3 routes)" as U1
usecase "DELETE/GET/PATCH /profile (3 routes)" as U2
usecase "GET/POST /register (2 routes)" as U3
usecase "GET/POST /login (2 routes)" as U4
usecase "GET /verify-email (2 routes)" as U5
}
A_http --> U0
A_http --> U1
A_http --> U2
A_http --> U3
A_http --> U4
A_http --> U5
@enduml
Routes HTTP 27
Mermaid Carte des routes par préfixe
flowchart LR
api(["HTTP API"])
g0["/forgot-password"]
api --> g0
g0r0["GET forgot-password"]
g0 --> g0r0
g0r1["POST forgot-password"]
g0 --> g0r1
g0r2["GET /forgot-password"]
g0 --> g0r2
g0r3["POST /forgot-password"]
g0 --> g0r3
g1["/reset-password"]
api --> g1
g1r0["GET reset-password/'token'"]
g1 --> g1r0
g1r1["POST reset-password"]
g1 --> g1r1
g1r2["GET /reset-password/'token'"]
g1 --> g1r2
g1r3["POST /reset-password"]
g1 --> g1r3
g2["/profile"]
api --> g2
g2r0["GET /profile"]
g2 --> g2r0
g2r1["PATCH /profile"]
g2 --> g2r1
g2r2["DELETE /profile"]
g2 --> g2r2
g3["/auth"]
api --> g3
g3r0["GET /auth/redirect"]
g3 --> g3r0
g3r1["GET /auth/callback"]
g3 --> g3r1
g4["/confirm-password"]
api --> g4
g4r0["GET confirm-password"]
g4 --> g4r0
g4r1["POST confirm-password"]
g4 --> g4r1
g5["/login"]
api --> g5
g5r0["GET login"]
g5 --> g5r0
g5r1["POST login"]
g5 --> g5r1
g6["/register"]
api --> g6
g6r0["GET register"]
g6 --> g6r0
g6r1["POST register"]
g6 --> g6r1
g7["/verify-email"]
api --> g7
g7r0["GET verify-email"]
g7 --> g7r0
g7r1["GET verify-email/'id'/'hash'"]
g7 --> g7r1
g8["/"]
api --> g8
g8r0["GET /"]
g8 --> g8r0
g9["/admin"]
api --> g9
g9r0["GET /admin"]
g9 --> g9r0
more["+4 groups"]
api --> more
| Méthode | Chemin | Source |
|---|---|---|
| GET | register | AuthLaravel/routes/auth.php:15 |
| POST | register | AuthLaravel/routes/auth.php:18 |
| GET | login | AuthLaravel/routes/auth.php:20 |
| POST | login | AuthLaravel/routes/auth.php:23 |
| GET | forgot-password | AuthLaravel/routes/auth.php:25 |
| POST | forgot-password | AuthLaravel/routes/auth.php:28 |
| GET | reset-password/{token} | AuthLaravel/routes/auth.php:31 |
| POST | reset-password | AuthLaravel/routes/auth.php:34 |
Afficher 16 routes de plus
| GET | verify-email | AuthLaravel/routes/auth.php:39 |
| GET | verify-email/{id}/{hash} | AuthLaravel/routes/auth.php:42 |
| POST | email/verification-notification | AuthLaravel/routes/auth.php:46 |
| GET | confirm-password | AuthLaravel/routes/auth.php:50 |
| POST | confirm-password | AuthLaravel/routes/auth.php:53 |
| PUT | password | AuthLaravel/routes/auth.php:55 |
| POST | logout | AuthLaravel/routes/auth.php:57 |
| GET | / | AuthLaravel/routes/web.php:20 |
| GET | /dashboard | AuthLaravel/routes/web.php:29 |
| GET | /profile | AuthLaravel/routes/web.php:39 |
| PATCH | /profile | AuthLaravel/routes/web.php:40 |
| DELETE | /profile | AuthLaravel/routes/web.php:41 |
| GET | /forgot-password | AuthLaravel/routes/web.php:44 |
| GET | /admin exploitation | AuthLaravel/routes/web.php:48 |
| POST | /forgot-password | AuthLaravel/routes/web.php:59 |
| GET | /reset-password/{token} | AuthLaravel/routes/web.php:72 |
3 autres routes sont dans le code. Les routes marquées exploitation exposent la santé, l’état ou l’administration; restreignez-les en production.
7.5. Interface privée
Ces noms sont internes selon les conventions du langage: tiret bas initial, private, static ou pub(crate).
- Méthode privée ou interne
- 5
7.6. Services
Contrôleur 12
AuthenticatedSessionControllercreate, store, destroy et 2 autresRegisteredUserControllercreate, store, getBrowser et 1 autresProfileControlleredit, update, destroyConfirmablePasswordControllershow, storeNewPasswordControllercreate, storePasswordResetLinkControllercreate, storeProviderControllerredirect, callbackEmailVerificationNotificationControllerstore
Fournisseur 5
AppServiceProviderregister, bootEventServiceProviderboot, shouldDiscoverEventsRouteServiceProviderboot, configureRateLimitingAuthServiceProviderbootBroadcastServiceProviderboot
Gestionnaire 1
Handlerregister
7.7. Entités et modèle de données 1
| Entité | Nature | Premiers champs |
|---|---|---|
User | Modèle ORM | name, username, email, phone, roles, permissions, password, provider |
7.8. Logique métier
Une fois écartés le code d’interface et les services et entités ci-dessus, ces classes ont le plus de méthodes.
LoginRequestPoints d’entrée et API, 8 méthodesauthorize, rules, authenticate, ensureIsNotRateLimited, throttleKey, prepareForValidationAdd2FAColumnToUsersDonnées et infrastructure, 2 méthodesup, downHandleInertiaRequestsPoints d’entrée et API, 2 méthodesversion, shareUserFactoryDonnées et infrastructure, 2 méthodesdefinition, unverified
7.9. Base de données et persistance
Tables et collections 4
users password_reset_tokens failed_jobs personal_access_tokens
Conteneurs de données
7.10. Intégrations externes
Clients HTTP
Hôtes nommés dans le code
fonts.bunny.net2 fichiersAuthLaravel/resources/views/app.blade.php:10envoyer.io1 fichiersAuthLaravel/resources/views/welcome.blade.php:114forge.laravel.com1 fichiersAuthLaravel/resources/views/welcome.blade.php:114laracasts.com1 fichiersAuthLaravel/resources/views/welcome.blade.php:63laravel-news.com1 fichiersAuthLaravel/resources/views/welcome.blade.php:83laravel.com1 fichiersAuthLaravel/resources/views/welcome.blade.php:43nova.laravel.com1 fichiersAuthLaravel/resources/views/welcome.blade.php:114sqs.us-east-1.amazonaws.com1 fichiersAuthLaravel/config/queue.php:58static.vecteezy.com1 fichiersAuthLaravel/resources/js/Pages/Dashboard.tsx:44tailwindui.com1 fichiersAuthLaravel/resources/js/Pages/Welcome.tsx:41
7.11. Stack et dépendances
Node.js AuthLaravel/package.json 5 à l’exécution, 19 dev
Dépendances externes
39 paquets déclarés (12 à l’exécution, 27 pour le développement) dans AuthLaravel/composer.json, AuthLaravel/package.json.
Tableau des paquets 39
| Paquet | Version | Usage | Rôle | Registre |
|---|---|---|---|---|
guzzlehttp/guzzle | ^7.2 | exécution | Guzzle is a PHP HTTP client library | packagist.org |
inertiajs/inertia-laravel | ^0.6.3 | exécution | The Laravel adapter for Inertia.js. | packagist.org |
laravel/framework | ^10.0 | exécution | Cadriciel web | packagist.org |
laravel/sanctum | ^3.2 | exécution | Authentification et sécurité | packagist.org |
laravel/socialite | ^5.6 | exécution | Laravel wrapper around OAuth 1 & OAuth 2 libraries. | packagist.org |
laravel/tinker | ^2.8 | exécution | Powerful REPL for the Laravel framework. | packagist.org |
tightenco/ziggy | ^1.0 | exécution | Use your Laravel named routes in JavaScript. | packagist.org |
fakerphp/faker | ^1.9.1 | développement | Tests | packagist.org |
laravel/breeze | ^1.20 | développement | Minimal Laravel authentication scaffolding with Blade and Tailwind. | packagist.org |
laravel/pint | ^1.0 | développement | An opinionated code formatter for PHP. | packagist.org |
laravel/sail | ^1.21 | développement | Docker files for running a basic Laravel application. | packagist.org |
mockery/mockery | ^1.4.4 | développement | Tests | packagist.org |
nunomaduro/collision | ^7.0 | développement | Cli error handling for console/command-line PHP applications. | packagist.org |
phpunit/phpunit | ^10.0 | développement | Tests | packagist.org |
spatie/laravel-ignition | ^2.0 | développement | A beautiful error page for Laravel applications. | packagist.org |
react-google-recaptcha | ^2.1.0 | exécution | Interface utilisateur | npmjs.com |
react-password-strength-bar | ^0.4.1 | exécution | Interface utilisateur | npmjs.com |
react-three-fiber | ^6.0.13 | exécution | Interface utilisateur | npmjs.com |
three | ^0.151.3 | exécution | Graphisme, image et 3D | npmjs.com |
three.js | ^0.77.1 | exécution | Graphisme, image et 3D | npmjs.com |
@headlessui/react | ^1.4.2 | développement | A set of completely unstyled, fully accessible UI components for React, designed to integrate beautifully with Tailwind CSS. | npmjs.com |
@inertiajs/react | ^1.0.0 | développement | The React adapter for Inertia.js | npmjs.com |
@tailwindcss/forms | ^0.5.3 | développement | Interface utilisateur | npmjs.com |
@types/node | ^18.13.0 | développement | Typage | npmjs.com |
@types/react | ^18.0.28 | développement | Typage | npmjs.com |
@types/react-dom | ^18.0.10 | développement | Typage | npmjs.com |
@types/react-google-recaptcha | ^2.1.5 | développement | Typage | npmjs.com |
@types/three | ^0.150.1 | développement | Typage | npmjs.com |
@types/ziggy-js | ^1.3.2 | développement | Typage | npmjs.com |
@vitejs/plugin-react | ^3.0.0 | développement | The default Vite plugin for React projects | npmjs.com |
autoprefixer | ^10.4.12 | développement | Outils de build | npmjs.com |
axios | ^1.1.2 | développement | Client HTTP | npmjs.com |
laravel-vite-plugin | ^0.7.2 | développement | Laravel plugin for Vite. | npmjs.com |
postcss | ^8.4.18 | développement | Outils de build | npmjs.com |
react | ^18.2.0 | développement | Interface utilisateur | npmjs.com |
react-dom | ^18.2.0 | développement | Interface utilisateur | npmjs.com |
tailwindcss | ^3.2.1 | développement | Interface utilisateur | npmjs.com |
typescript | ^5.0.2 | développement | Typage | npmjs.com |
vite | ^4.0.0 | développement | Outils de build | npmjs.com |
7.12. Pipeline CI/CD
Aucun pipeline CI/CD dans le dépôt. Le code se construit et se lance à la main, comme décrit plus haut.
7.13. Déploiement
Mermaid Schéma de déploiement
flowchart LR
repo[("Dépôt GitHub")]
local["Poste local<br/>PHP · Node.js"]
repo -->|"cloner et lancer"| local
UML Déploiement
Le nœud extérieur est l’endroit où le code s’exécute. Chaque image de base pointe vers ce qu’elle construit, les flèches pleines mènent aux bases de données et les pointillées aux services externes. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
node "Pile Docker Compose" as H {
artifact "AuthLaravel" as APP
}
database "Eloquent ORM" as DB0
APP --> DB0
cloud "AWS" as E0
APP ..> E0
cloud "WebSocket" as E1
APP ..> E1
@enduml
Où il s’exécute
7.14. Supervision
Ce que le code consigne, mesure et expose pour savoir s’il fonctionne.
Vérifications de santé des conteneurs
7.15. Sécurité
Contrôles
- Validation des requêtes du cadriciel
- Authentification Laravel
- Protection CSRF web
- Limitation de débit web
- Hachage des mots de passe authentification
Chaîne d’approvisionnement
Variables d’environnement 93
La page reprend les noms sans leurs valeurs et souligne ceux qui ressemblent à des secrets.
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY DB_PASSWORD REDIS_PASSWORD ABLY_KEY APP_KEY DB_FOREIGN_KEYS MAILGUN_SECRET MAIL_PASSWORD MEMCACHED_PASSWORD POSTMARK_TOKEN PUSHER_APP_KEY PUSHER_APP_SECRET LOG_LEVEL APP_NAME AWS_DEFAULT_REGION
7.16. Tests automatisés
- Fichiers de test
- 12
- Fichiers source
- 109
- Cas de test, environ
- 24
- Tests unitaires
- 11
- Tests intégration
- 1
Aucun rapport chiffré de couverture dans les sources analysées.
Où sont les tests
AuthLaravel/tests/Feature/Auth 6 AuthLaravel/tests 3 AuthLaravel/tests/Feature 2 AuthLaravel/tests/Unit 1
8. Types et structure des fichiers
43 types déclarés, dont 12 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t1fe773fc7ae3["Kernel"] {
schedule()
commands()
}
class tfe51bb4928b0["Handler"] {
register()
}
class tf7ff8a2cab05["AuthenticatedSessionController"] {
create()
store()
destroy()
getBrowser()
}
class tbe9d5f7c0639["ConfirmablePasswordController"] {
show()
store()
}
class t50bb69bc248b["EmailVerificationNotificationController"] {
store()
}
class t16728102d86c["EmailVerificationPromptController"] {
__invoke()
}
class t927bbb823adb["NewPasswordController"] {
create()
store()
}
class ta16a6063a87f["PasswordController"] {
update()
}
class t0154a8c3ca84["PasswordResetLinkController"] {
create()
store()
}
class t50ceb4a72206["ProviderController"] {
redirect()
callback()
}
class t2737b9fd1b1c["RegisteredUserController"] {
create()
store()
getBrowser()
getOS()
}
class t23933425e397["VerifyEmailController"] {
__invoke()
}
class bce885b56bfe5["ConsoleKernel"] {
<<unresolved_base>>
}
t1fe773fc7ae3 ..> bce885b56bfe5 : declared base
class b0f719e4b7646["ExceptionHandler"] {
<<unresolved_base>>
}
tfe51bb4928b0 ..> b0f719e4b7646 : declared base
class b72f3a4384884["Controller"] {
<<unresolved_base>>
}
tf7ff8a2cab05 ..> b72f3a4384884 : declared base
class bac0ac8cfc274["Controller"] {
<<unresolved_base>>
}
tbe9d5f7c0639 ..> bac0ac8cfc274 : declared base
class b6a845f286ec8["Controller"] {
<<unresolved_base>>
}
t50bb69bc248b ..> b6a845f286ec8 : declared base
class b066194bb3cef["Controller"] {
<<unresolved_base>>
}
t16728102d86c ..> b066194bb3cef : declared base
class bdaab95927f7e["Controller"] {
<<unresolved_base>>
}
t927bbb823adb ..> bdaab95927f7e : declared base
class b74cef29cd3a3["Controller"] {
<<unresolved_base>>
}
ta16a6063a87f ..> b74cef29cd3a3 : declared base
class bbf0594294b45["Controller"] {
<<unresolved_base>>
}
t0154a8c3ca84 ..> bbf0594294b45 : declared base
class bf47dba55be58["Controller"] {
<<unresolved_base>>
}
t50ceb4a72206 ..> bf47dba55be58 : declared base
class b134294c7cccc["Controller"] {
<<unresolved_base>>
}
t2737b9fd1b1c ..> b134294c7cccc : declared base
class b8b1b484f3c15["Controller"] {
<<unresolved_base>>
}
t23933425e397 ..> b8b1b484f3c15 : declared base
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
9. Référence
120 / 120 fichiers admissibles lus (148 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
11. Fichiers à lire 3
12. Glossaire
Dépôt
Les fichiers source, la configuration et l’historique versionné d’un projet.
README
Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.
Dépendance
Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.
HTTP
Un protocole de requête et réponse utilisé par les navigateurs et services web. Une requête comprend une méthode, un chemin, des en-têtes et parfois un corps.
Session
Un état conservé entre plusieurs requêtes, souvent pour suivre un utilisateur connecté. L’authentification et les permissions restent des vérifications distinctes.
Interface en ligne de commande
Une interface textuelle où les commandes et arguments choisissent les opérations. Les codes de retour permettent aux scripts de détecter un succès ou un échec.
Compilation
Les étapes qui transforment les sources et dépendances en programme exécutable ou en livrable distribuable.
GPU
Un processeur conçu pour les calculs parallèles, dont le rendu graphique et de nombreuses opérations numériques.
Backend
Une implémentation derrière une interface commune. Selon le contexte, il peut s’agir d’un service côté serveur ou d’une implémentation graphique, d’entrée ou de stockage.
Micrologiciel
Un logiciel exécuté sur un appareil ou microcontrôleur pour contrôler son matériel et ses communications.
13. Références
- antoinebou12. (2026, 5 novembre). AuthLaravel. [Software repository] github.com.
- antoinebou12. (2026, 5 novembre). AuthLaravel: README. [Repository documentation] github.com.
- antoinebou12. (2026, 5 novembre). AuthLaravel/routes/web.php. [Source file] github.com.
- antoinebou12. (2026, 5 novembre). AuthLaravel/composer.json. [Source file] github.com.
- antoinebou12. (2026, 5 novembre). AuthLaravel/package.json. [Source file] github.com.
- Boucher, A. (2026, 23 octobre). AuthLaravel : Sessions, rôles et pages Inertia. [Project article] antoineboucher.info.
Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.