diff --git a/app/Http/Middleware/BindProjectModel.php b/app/Http/Middleware/BindProjectModel.php new file mode 100644 index 0000000..1efef77 --- /dev/null +++ b/app/Http/Middleware/BindProjectModel.php @@ -0,0 +1,23 @@ +route(); + if ($route && $route->parameter('project')) { + $projectId = $route->parameter('project'); + if (is_string($projectId) && is_numeric($projectId)) { + $project = Project::findOrFail($projectId); + $route->setParameter('project', $project); + } + } + return $next($request); + } +} \ No newline at end of file diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index f956cfd..2bfb865 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,9 +2,11 @@ namespace App\Providers; +use App\Models\Project; use App\Models\Task; use App\Policies\TaskPolicy; use Illuminate\Support\Facades\Gate; +use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -14,7 +16,8 @@ class AppServiceProvider extends ServiceProvider */ public function register(): void { - // + // Register route model bindings early (before routes are loaded) + Route::model('project', Project::class); } /** @@ -22,6 +25,9 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { + // Re-register model bindings so they persist in route cache + Route::model('project', Project::class); + // Register policies Gate::policy(Task::class, TaskPolicy::class); diff --git a/resources/views/livewire/layout/navigation.blade.php b/resources/views/livewire/layout/navigation.blade.php index b89d2e4..abf07ee 100644 --- a/resources/views/livewire/layout/navigation.blade.php +++ b/resources/views/livewire/layout/navigation.blade.php @@ -49,13 +49,14 @@ new class extends Component + @can('view users')