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 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 |
Aperçu
Pourquoi il existe
Modèle d'authentification Laravel implémentant JWT, sessions et politiques de rôles.
Cas d’usage
Socle d'authentification robuste pour projets et API Laravel.
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
AuthLaravel/package.json
devvitebuildtsc && vite build && vite build --ssr
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
Requirements
README.md
- Docker
- Docker Compose
- Node.js
- NPM
- PHP 8.1.2
- Composer
Requirements
AuthLaravel/README.md
- Docker
- Docker Compose
- Node.js
- NPM
- PHP 8.1.2
- Composer
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.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Requête du navigateur
- Middleware Laravel
- Rôle et logique de route
- Réponse Inertia
- Page Vue
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
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_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
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_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
node_visitor(("Browser user"))
node_visitor -.->|"requests pages"| node_web_routes
node_web_routes -->|"loads routes"| node_auth_routes
node_auth_routes -->|"routes login"| node_login
node_auth_routes -->|"routes registration"| node_registration
node_login -->|"authenticates with"| node_login_request
node_login_request -->|"uses identity"| node_user
node_registration -->|"creates account"| node_user
node_web_routes -->|"routes profile"| node_profile
node_profile -->|"updates account"| node_user
node_auth_routes -->|"routes verification"| node_email_verification
node_auth_routes -->|"routes prompt"| node_verification_notice
node_auth_routes -->|"routes notification"| node_verification_email
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_auth_routes -.->|"optional sign-in"| node_provider_login
node_http_kernel -->|"registers middleware"| node_role_guard
node_visitor -.->|"uses role pages"| node_role_pages
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 toneRoseUne 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 ou le README
- 16/19
Version texte du diagramme
- Requête du navigateur → Middleware Laravel
- Middleware Laravel → Rôle et logique de route
- Rôle et logique de route → Réponse Inertia
- Réponse Inertia → Page Vue
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.
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.
Index des types
Kernel(class) ·AuthLaravel/app/Console/Kernel.php:8Méthodes dans l’aperçu :
schedule, commands.Bases déclarées :
ConsoleKernel.Handler(class) ·AuthLaravel/app/Exceptions/Handler.php:8Méthodes dans l’aperçu :
register.Bases déclarées :
ExceptionHandler.AuthenticatedSessionController(class) ·AuthLaravel/app/Http/Controllers/Auth/AuthenticatedSessionController.php:15Méthodes dans l’aperçu :
create, store, destroy, getBrowser.Bases déclarées :
Controller.ConfirmablePasswordController(class) ·AuthLaravel/app/Http/Controllers/Auth/ConfirmablePasswordController.php:14Méthodes dans l’aperçu :
show, store.Bases déclarées :
Controller.EmailVerificationNotificationController(class) ·AuthLaravel/app/Http/Controllers/Auth/EmailVerificationNotificationController.php:10Méthodes dans l’aperçu :
store.Bases déclarées :
Controller.EmailVerificationPromptController(class) ·AuthLaravel/app/Http/Controllers/Auth/EmailVerificationPromptController.php:12Méthodes dans l’aperçu :
__invoke.Bases déclarées :
Controller.NewPasswordController(class) ·AuthLaravel/app/Http/Controllers/Auth/NewPasswordController.php:17Méthodes dans l’aperçu :
create, store.Bases déclarées :
Controller.PasswordController(class) ·AuthLaravel/app/Http/Controllers/Auth/PasswordController.php:11Méthodes dans l’aperçu :
update.Bases déclarées :
Controller.PasswordResetLinkController(class) ·AuthLaravel/app/Http/Controllers/Auth/PasswordResetLinkController.php:13Méthodes dans l’aperçu :
create, store.Bases déclarées :
Controller.ProviderController(class) ·AuthLaravel/app/Http/Controllers/Auth/ProviderController.php:12Méthodes dans l’aperçu :
redirect, callback.Bases déclarées :
Controller.RegisteredUserController(class) ·AuthLaravel/app/Http/Controllers/Auth/RegisteredUserController.php:17Méthodes dans l’aperçu :
create, store, getBrowser, getOS.Bases déclarées :
Controller.VerifyEmailController(class) ·AuthLaravel/app/Http/Controllers/Auth/VerifyEmailController.php:11Méthodes dans l’aperçu :
__invoke.Bases déclarées :
Controller.
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.
Carte des fichiers
flowchart TD
root["AuthLaravel"]
f0["AuthLaravel/composer.json"]
root --> f0
f1["AuthLaravel/package.json"]
root --> f1
f2["AuthLaravel/routes/web.php"]
root --> f2
f3["README.md"]
root --> f3
f4["AuthLaravel/README.md"]
root --> f4
f5["AuthLaravel/docker-compose.yml"]
root --> f5
f6["AuthLaravel/postcss.config.js"]
root --> f6
f7["AuthLaravel/tailwind.config.js"]
root --> f7
f8["AuthLaravel/vite.config.js"]
root --> f8
f9["AuthLaravel/bootstrap/app.php"]
root --> f9
f10["AuthLaravel/config/app.php"]
root --> f10
f11["AuthLaravel/config/auth.php"]
root --> f11
f12["AuthLaravel/config/broadcasting.php"]
root --> f12
f13["AuthLaravel/config/cache.php"]
root --> f13
f14["AuthLaravel/config/cors.php"]
root --> f14
f15["AuthLaravel/config/database.php"]
root --> f15