Skip to content
laravel-auth logo

Laravel Authentication & Authorization

laravel-auth

Use when implementing user authentication, API tokens, social login, or authorization. Covers Sanctum, Passport, Socialite, Fortify, policies, and gates for Laravel 12.

SKILL.md

Full skill instructions

Laravel Authentication & Authorization

Agent Workflow (MANDATORY)

Before ANY implementation, launch in parallel:

  1. fuse-ai-pilot:explore-codebase - Check existing auth setup, guards, policies
  2. fuse-ai-pilot:research-expert - Verify latest Laravel 12 auth docs via Context7
  3. mcp__context7__query-docs - Query specific patterns (Sanctum, Passport, etc.)

After implementation, run fuse-ai-pilot:sniper for validation.


Overview

Laravel provides a complete authentication and authorization ecosystem. Choose based on your needs:

PackageBest ForComplexity
Starter KitsNew projects, quick setupLow
SanctumAPI tokens, SPA authLow
FortifyCustom UI, headless backendMedium
PassportOAuth2 server, third-party accessHigh
SocialiteSocial login (Google, GitHub)Low

Critical Rules

  1. Use policies for model authorization - Not inline if checks
  2. Always hash passwords - Hash::make() or 'hashed' cast
  3. Regenerate session after login - Prevents fixation attacks
  4. Use HTTPS in production - Required for secure cookies
  5. Define token abilities - Principle of least privilege

Architecture

app/
├── Http/
│   ├── Controllers/
│   │   └── Auth/              ← Auth controllers (if manual)
│   └── Middleware/
│       └── Authenticate.php   ← Redirects unauthenticated
├── Models/
│   └── User.php               ← HasApiTokens trait (Sanctum)
├── Policies/                  ← Authorization policies
│   └── PostPolicy.php
├── Providers/
│   └── AppServiceProvider.php ← Gate definitions
└── Actions/
    └── Fortify/               ← Fortify actions (if used)
        ├── CreateNewUser.php
        └── ResetUserPassword.php

config/
├── auth.php                   ← Guards & providers
├── sanctum.php                ← API token config
└── fortify.php                ← Fortify features

FuseCore Integration

When working in a FuseCore project, authentication follows the modular structure:

FuseCore/
├── Core/                      # Infrastructure (priority 0)
│   └── App/​Contracts/
│       └── AuthServiceInterface.php  ← Auth contract
│
├── User/                      # Auth module (existing)
│   ├── App/
│   │   ├── Models/​User.php    ← HasApiTokens trait
│   │   ├── Http/
│   │   │   ├── Controllers/
│   │   │   │   ├── AuthController.php
│   │   │   │   └── TokenController.php
│   │   │   ├── Requests/
│   │   │   │   ├── LoginRequest.php
│   │   │   │   └── RegisterRequest.php
│   │   │   └── Resources/​UserResource.php
│   │   ├── Policies/​UserPolicy.php
│   │   └── Services/​AuthService.php
│   ├── Config/
│   │   └── sanctum.php        ← Sanctum config (module-level)
│   ├── Database/​Migrations/
│   ├── Routes/​api.php         ← Auth routes
│   └── module.json            # dependencies: []
│
└── {YourModule}/              # Depends on User module
    ├── App/​Policies/          ← Module-specific policies
    └── module.json            # dependencies: ["User"]

FuseCore Auth Checklist

  • Auth code in /​FuseCore/​User/ module
  • Policies in module's /​App/​Policies/
  • Auth routes in /​FuseCore/​User/​Routes/​api.php
  • Sanctum config in /​FuseCore/​User/​Config/​sanctum.php
  • Declare "User" dependency in other modules' module.json
  • Use auth:sanctum middleware in module routes

Cross-Module Authorization

// In FuseCore/​{Module}/​Routes/​api.php
Route::middleware(['api', 'auth:sanctum'])->group(function () {
    Route::apiResource('posts', PostController::class);
});

// In FuseCore/​{Module}/​App/​Http/​Controllers/​PostController.php
public function update(UpdatePostRequest $request, Post $post)
{
    $this->authorize('update', $post);  // Uses PostPolicy
    // ...
}

→ See fusecore skill for complete module patterns.


Decision Guide

Authentication Method

Need auth scaffolding? → Starter Kit
├── Yes → Use React/​Vue/​Livewire starter kit
└── No → Building custom frontend?
    ├── Yes → Use Fortify (headless)
    └── No → API only?
        ├── Yes → Sanctum (tokens)
        └── No → Session-based

Token Type

Third-party apps need access? → Passport (OAuth2)
├── No → Mobile app?
│   ├── Yes → Sanctum API tokens
│   └── No → SPA on same domain?
│       ├── Yes → Sanctum SPA auth (cookies)
│       └── No → Sanctum API tokens

Key Concepts

ConceptDescriptionReference
GuardsDefine HOW users authenticate (session, token)authentication.md
ProvidersDefine WHERE users are retrieved from (database)authentication.md
GatesClosure-based authorization for simple checksauthorization.md
PoliciesClass-based authorization tied to modelsauthorization.md
AbilitiesToken permissions (Sanctum/​Passport scopes)sanctum.md

Reference Guide

Concepts (WHY & Architecture)

TopicReferenceWhen to Consult
Authenticationauthentication.mdGuards, providers, login flow
Authorizationauthorization.mdGates vs policies, access control
Sanctumsanctum.mdAPI tokens, SPA authentication
Passportpassport.mdOAuth2 server, third-party access
Fortifyfortify.mdHeadless auth, 2FA
Socialitesocialite.mdSocial login providers
Starter Kitsstarter-kits.mdAuth scaffolding
Email Verificationverification.mdMustVerifyEmail, verified middleware
Password Resetpasswords.mdForgot password flow
Sessionsession.mdSession drivers, flash data
CSRFcsrf.mdForm protection, AJAX tokens
Encryptionencryption.mdData encryption (not passwords)
Hashinghashing.mdPassword hashing

Templates (Complete Code)

TemplateWhen to Use
LoginController.php.mdManual authentication controllers
GatesAndPolicies.php.mdGates and policy examples
PostPolicy.php.mdComplete policy class with before filter
sanctum-setup.mdSanctum configuration + testing
PassportSetup.php.mdOAuth2 server setup
FortifySetup.php.mdFortify configuration + 2FA
SocialiteController.php.mdSocial login + testing
PasswordResetController.php.mdPassword reset flow

Best Practices

DO

  • Use starter kits for new projects
  • Define policies for all models
  • Set token expiration
  • Rate limit login attempts
  • Use verified middleware for sensitive actions
  • Prune expired tokens regularly

DON'T

  • Store plain text passwords
  • Skip session regeneration on login
  • Use Passport when Sanctum suffices
  • Forget to prune expired tokens
  • Ignore HTTPS in production
  • Put authorization logic in controllers

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View