Skip to content

Document Guard Architecture and sanctum usage #130

@kevalyq

Description

@kevalyq

🎯 Objective

Document the Laravel Guard architecture and explain why SecPal uses 'sanctum' guard for all permissions.

📋 Changes Required

New Documentation File

Create: docs/GUARD_ARCHITECTURE.md

Content Structure

  1. Laravel Guards Overview

    • What is a guard?
    • Common guard types (web, sanctum, api)
    • How guards relate to authentication
  2. SecPal Architecture Decision

    • Frontend: React PWA with Bearer tokens
    • Backend: Token-based API (stateless)
    • No session/cookie usage
    • Therefore: 'sanctum' guard throughout
  3. Spatie Permission Integration

    • Permissions are guard-aware
    • Why guard_name='sanctum' is required
    • What happens if guard mismatch occurs
  4. Migration Context

  5. Developer Guidelines

    • Always specify guard_name='sanctum' when creating permissions
    • User model has $guard_name = 'sanctum'
    • All routes use auth:sanctum middleware

Example Code Snippets

// ✅ Correct: Permission for sanctum guard
Permission::create([
    'name' => 'employees.read',
    'guard_name' => 'sanctum',
]);

// ❌ Wrong: Defaults to 'web' guard
Permission::create(['name' => 'employees.read']);

✅ Acceptance Criteria

📊 Expected Impact

Before: Implicit knowledge, confusion about guard usage
After: Clear documentation, onboarding resource for new developers

🔗 Related

⏱️ Effort Estimate

Time: 30-45 minutes
Complexity: Medium (requires clear technical writing)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions