Aller au contenu

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%
Langages du dépôtPHP 53.63%5

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
PHP53.63%143 951
TypeScript35.05%94 085
Blade10.93%29 335
JavaScript0.37%999
CSS0.02%59

GitHub · README · Statistiques de langages

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.

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

AuthLaravel/package.json

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

Requirements

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

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.

Contexte système Contexte
  1. Requête du navigateur
  2. Middleware Laravel
  3. Rôle et logique de route
  4. Réponse Inertia
  5. 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.

Vue statique de l’architecture de AuthLaravel
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
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 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 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

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

Fichiers à lire 3

Références