fix(auth): register Spatie role/permission middleware + add missing #[Layout] (fixes post-login crash)
Login authenticated fine but the landing page crashed (so it looked like
'login doesn't work'):
- bootstrap/app.php didn't register Spatie's middleware aliases -> any route
with role:/permission: threw 'Target class [role] does not exist'.
Registered role / permission / role_or_permission.
- config/livewire.php absent -> default layout is the non-existent
components.layouts.app. ProjectList, PhaseProgress and ReportsDashboard
lacked #[Layout('layouts.app')] -> MissingLayoutException. Added it (the
other 10 routed components already had it).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,8 +3,10 @@
|
|||||||
namespace App\Livewire;
|
namespace App\Livewire;
|
||||||
|
|
||||||
use Livewire\Component;
|
use Livewire\Component;
|
||||||
|
use Livewire\Attributes\Layout;
|
||||||
use App\Models\Phase;
|
use App\Models\Phase;
|
||||||
|
|
||||||
|
#[Layout('layouts.app')]
|
||||||
class PhaseProgress extends Component
|
class PhaseProgress extends Component
|
||||||
{
|
{
|
||||||
public Phase $phase;
|
public Phase $phase;
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ namespace App\Livewire;
|
|||||||
|
|
||||||
use Livewire\Component;
|
use Livewire\Component;
|
||||||
use Livewire\WithPagination;
|
use Livewire\WithPagination;
|
||||||
|
use Livewire\Attributes\Layout;
|
||||||
use App\Models\Project;
|
use App\Models\Project;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
#[Layout('layouts.app')]
|
||||||
class ProjectList extends Component
|
class ProjectList extends Component
|
||||||
{
|
{
|
||||||
use WithPagination;
|
use WithPagination;
|
||||||
|
|||||||
@@ -3,11 +3,13 @@
|
|||||||
namespace App\Livewire\Reports;
|
namespace App\Livewire\Reports;
|
||||||
|
|
||||||
use Livewire\Component;
|
use Livewire\Component;
|
||||||
|
use Livewire\Attributes\Layout;
|
||||||
use App\Models\Project;
|
use App\Models\Project;
|
||||||
use App\Models\Phase;
|
use App\Models\Phase;
|
||||||
use App\Models\Inspection;
|
use App\Models\Inspection;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
#[Layout('layouts.app')]
|
||||||
class ReportsDashboard extends Component
|
class ReportsDashboard extends Component
|
||||||
{
|
{
|
||||||
public $dateRange = 'month'; // week, month, quarter, year
|
public $dateRange = 'month'; // week, month, quarter, year
|
||||||
|
|||||||
@@ -12,6 +12,13 @@ return Application::configure(basePath: dirname(__DIR__))
|
|||||||
)
|
)
|
||||||
->withMiddleware(function (Middleware $middleware): void {
|
->withMiddleware(function (Middleware $middleware): void {
|
||||||
$middleware->appendToGroup('web', \App\Http\Middleware\SetLocale::class);
|
$middleware->appendToGroup('web', \App\Http\Middleware\SetLocale::class);
|
||||||
|
|
||||||
|
// Spatie permission middleware aliases
|
||||||
|
$middleware->alias([
|
||||||
|
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
|
||||||
|
'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
|
||||||
|
'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class,
|
||||||
|
]);
|
||||||
})
|
})
|
||||||
->withExceptions(function (Exceptions $exceptions): void {
|
->withExceptions(function (Exceptions $exceptions): void {
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<div>
|
<div>
|
||||||
<x-slot name="header">
|
<x-slot name="header">
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<a href="{{ route('companies.manage') }}" class="btn btn-ghost btn-sm px-2" wire:navigate>
|
<a href="{{ route('companies.manage') }}" class="btn btn-ghost btn-sm px-2" wire:navigate>
|
||||||
<x-heroicon-o-arrow-left class="w-4 h-4" />
|
<x-heroicon-o-arrow-left class="w-4 h-4" />
|
||||||
@@ -8,10 +8,10 @@
|
|||||||
{{ $company ? 'Editar empresa: ' . $company->name : 'Nueva empresa' }}
|
{{ $company ? 'Editar empresa: ' . $company->name : 'Nueva empresa' }}
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
</x-slot>
|
</x-slot>
|
||||||
|
|
||||||
<div class="py-8">
|
<div class="py-8">
|
||||||
<div class="max-w-3xl mx-auto sm:px-6 lg:px-8">
|
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||||
|
|
||||||
@if(session('notify'))
|
@if(session('notify'))
|
||||||
<div class="alert alert-success mb-4">{{ session('notify') }}</div>
|
<div class="alert alert-success mb-4">{{ session('notify') }}</div>
|
||||||
@@ -241,6 +241,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="max-w-4xl mx-auto p-4">
|
<div class="max-w-7xl mx-auto p-4">
|
||||||
<div class="flex items-center justify-between mb-4">
|
<div class="flex items-center justify-between mb-4">
|
||||||
<h1 class="text-2xl font-bold">{{ $project ? __('Edit Project') : __('New Project') }}</h1>
|
<h1 class="text-2xl font-bold">{{ $project ? __('Edit Project') : __('New Project') }}</h1>
|
||||||
<a href="{{ route('projects.index') }}" class="btn btn-ghost btn-sm gap-1" wire:navigate>
|
<a href="{{ route('projects.index') }}" class="btn btn-ghost btn-sm gap-1" wire:navigate>
|
||||||
|
|||||||
Reference in New Issue
Block a user