Example: Extending Auth

  • Auth logic is frequently reused across controllers and middleware
  • A macro can encapsulate common checks behind a readable method name
  • The result is cleaner, more intentional code at the call site
use Illuminate\Auth\SessionGuard;
use Illuminate\Support\Facades\Auth;

// Before: verbose guard check repeated everywhere
if (Auth::guard('user')->user() && Auth::guard('user')->user()->isAdmin()) {
    // ...
}

// Register a macro on SessionGuard
SessionGuard::macro('isAdmin', function () {
    return $this->user()?->isAdmin() ?? false;
});

// After: clean and readable
if (Auth::isAdmin()) {
    // ...
}

← / → navigate · N notes · Esc exit