Aller au contenu
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.

Application et services
  • Mis à jour
  • 1
  • PHP · 53.63%
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.

PHP53.63%
53.63%143 951 octets
TypeScript35.05%
35.05%94 085 octets
Blade10.93%
10.93%29 335 octets
JavaScript0.37%
0.37%999 octets
Langage%Octets
PHP53.63%143 951
TypeScript35.05%94 085
Blade10.93%29 335
JavaScript0.37%999
CSS0.02%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.

Diagramme de cas d’utilisation de AuthLaravel : Créer un compte; Se connecter avec limitation; Réinitialiser le mot de passe; Changer profil et mot de passe; Voir les comptes (admin)AuthLaravelCréer un compteSe connecter avec limitationRéinitialiser le mot de passeChanger profil et mot de passeVoir les comptes (admin)Utilisateur inscritAdministrateur«système»Mailpit (courriel dev)
Acteurs à gauche (personnes) et à droite (systèmes externes) ; chaque ovale est un cas d’utilisation appuyé par les fichiers cités ci-dessous.
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

  1. Depuis AuthLaravel/, lancer ./vendor/bin/sail up -d pour démarrer l’application avec MariaDB, Redis et Mailpit.
  2. Lancer ./vendor/bin/sail artisan migrate puis db:seed pour créer les comptes admin, user, residential et business.
  3. Ouvrir http://localhost/login et se connecter avec [email protected] pour voir la table des comptes.
  4. Se connecter avec [email protected] et ouvrir /admin ; le middleware renvoie vers le tableau de bord.
  5. 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.

AuthLaravel/README.md · Steps
./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
README.md · Steps
./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
Commandes déclarées dans les manifestes

3.1. AuthLaravel/package.json

dev
vite
build
tsc && 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
Lire les instructions complètes ↗
Documentation source

2 documents lus parmi 2 candidats.

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.

Composants du système Contexte
Mermaid Diagramme interactif

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de AuthLaravel
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
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
Modules et couche principale
ModuleCoucheFichiersTypesExtensions
AuthLaravel/resourcesPrésentation380.tsx .ts .php
AuthLaravel/HttpPoints d’entrée et API2727.php
AuthLaravel/configSource principale150.php
AuthLaravel/databaseDonnées et infrastructure106.php
AuthLaravel/ProvidersDonnées et infrastructure55.php
AuthLaravel/routesPoints d’entrée et API50.php
AuthLaravelSource principale40.js .xml
AuthLaravel/ConsolePrésentation11.php
AuthLaravel/ExceptionsServices applicatifs11.php
AuthLaravel/ModelsDomaine et règles métier11.php
AuthLaravel/bootstrapPoints d’entrée et API10.php
AuthLaravel/publicPrésentation10.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
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
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
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
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
  1. HTTP middleware vers Admin role guard registers middleware
  2. Inertia application vers Authentication pages resolves pages
  3. Inertia application vers Profile screen resolves pages
  4. Inertia application vers Role dashboards and customer lists resolves pages
  5. Browser user vers Web routes requests pages
  6. Browser user vers Role dashboards and customer lists uses role pages
  7. Web routes vers Auth routes loads routes
  8. Web routes vers Profile management routes profile
  9. Auth routes vers Login handler routes login
  10. Auth routes vers Registration handler routes registration
  11. Auth routes vers Email verification routes verification
  12. Auth routes vers Verification prompts routes prompt
  13. Auth routes vers Verification email routes notification
  14. Auth routes vers Provider sign-in optional sign-in
  15. Profile management vers User identity model updates account
  16. Login handler vers Login validation authenticates with
  17. Registration handler vers User identity model creates account
  18. User identity model vers User persistence persists records
  19. 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
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
Afficher 16 routes de plus

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

7.7. Entités et modèle de données 1

EntitéNaturePremiers champs
UserModèle ORMname, 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.

LoginRequest Points d’entrée et API, 8 méthodes
authorize, rules, authenticate, ensureIsNotRateLimited, throttleKey, prepareForValidation
Add2FAColumnToUsers Données et infrastructure, 2 méthodes
up, down
HandleInertiaRequests Points d’entrée et API, 2 méthodes
version, share
UserFactory Données et infrastructure, 2 méthodes
definition, unverified

7.9. Base de données et persistance

Tables et collections 4

users password_reset_tokens failed_jobs personal_access_tokens

8 migrations

Conteneurs de données

mariadb:10 redis:alpine

7.10. Intégrations externes

Clients HTTP

axios

Hôtes nommés dans le code

7.11. Stack et dépendances

PHP AuthLaravel/composer.json 7 à l’exécution, 8 dev

PHP ^8.1

Ouvrir le manifeste

Node.js AuthLaravel/package.json 5 à l’exécution, 19 dev

Ouvrir le manifeste

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
Dépendances externes
PaquetVersionUsageRôleRegistre
guzzlehttp/guzzle^7.2exécutionGuzzle is a PHP HTTP client librarypackagist.org
inertiajs/inertia-laravel^0.6.3exécutionThe Laravel adapter for Inertia.js.packagist.org
laravel/framework^10.0exécutionCadriciel webpackagist.org
laravel/sanctum^3.2exécutionAuthentification et sécuritépackagist.org
laravel/socialite^5.6exécutionLaravel wrapper around OAuth 1 & OAuth 2 libraries.packagist.org
laravel/tinker^2.8exécutionPowerful REPL for the Laravel framework.packagist.org
tightenco/ziggy^1.0exécutionUse your Laravel named routes in JavaScript.packagist.org
fakerphp/faker^1.9.1développementTestspackagist.org
laravel/breeze^1.20développementMinimal Laravel authentication scaffolding with Blade and Tailwind.packagist.org
laravel/pint^1.0développementAn opinionated code formatter for PHP.packagist.org
laravel/sail^1.21développementDocker files for running a basic Laravel application.packagist.org
mockery/mockery^1.4.4développementTestspackagist.org
nunomaduro/collision^7.0développementCli error handling for console/command-line PHP applications.packagist.org
phpunit/phpunit^10.0développementTestspackagist.org
spatie/laravel-ignition^2.0développementA beautiful error page for Laravel applications.packagist.org
react-google-recaptcha^2.1.0exécutionInterface utilisateurnpmjs.com
react-password-strength-bar^0.4.1exécutionInterface utilisateurnpmjs.com
react-three-fiber^6.0.13exécutionInterface utilisateurnpmjs.com
three^0.151.3exécutionGraphisme, image et 3Dnpmjs.com
three.js^0.77.1exécutionGraphisme, image et 3Dnpmjs.com
@headlessui/react^1.4.2développementA set of completely unstyled, fully accessible UI components for React, designed to integrate beautifully with Tailwind CSS.npmjs.com
@inertiajs/react^1.0.0développementThe React adapter for Inertia.jsnpmjs.com
@tailwindcss/forms^0.5.3développementInterface utilisateurnpmjs.com
@types/node^18.13.0développementTypagenpmjs.com
@types/react^18.0.28développementTypagenpmjs.com
@types/react-dom^18.0.10développementTypagenpmjs.com
@types/react-google-recaptcha^2.1.5développementTypagenpmjs.com
@types/three^0.150.1développementTypagenpmjs.com
@types/ziggy-js^1.3.2développementTypagenpmjs.com
@vitejs/plugin-react^3.0.0développementThe default Vite plugin for React projectsnpmjs.com
autoprefixer^10.4.12développementOutils de buildnpmjs.com
axios^1.1.2développementClient HTTPnpmjs.com
laravel-vite-plugin^0.7.2développementLaravel plugin for Vite.npmjs.com
postcss^8.4.18développementOutils de buildnpmjs.com
react^18.2.0développementInterface utilisateurnpmjs.com
react-dom^18.2.0développementInterface utilisateurnpmjs.com
tailwindcss^3.2.1développementInterface utilisateurnpmjs.com
typescript^5.0.2développementTypagenpmjs.com
vite^4.0.0développementOutils de buildnpmjs.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
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

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

  1. antoinebou12. (2026, 5 novembre). AuthLaravel. [Software repository] github.com.
  2. antoinebou12. (2026, 5 novembre). AuthLaravel: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, 5 novembre). AuthLaravel/routes/web.php. [Source file] github.com.
  4. antoinebou12. (2026, 5 novembre). AuthLaravel/composer.json. [Source file] github.com.
  5. antoinebou12. (2026, 5 novembre). AuthLaravel/package.json. [Source file] github.com.
  6. 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.