初心者です。
エラーハンドリングを実装しています。
"ユーザーとskidayが紐づいているときのみ許可する"という事をやりたいです。
現状は自分も編集画面にアクセスできなくなってしまいます。
web
1Route::get('/calendar/{skiday}', 'CalendarController@show')->name('calendar.show'); 2Route::group(['middleware' => 'can:update,skiday'], function(){ 3 Route::get('/calendar/{skiday}/edit', 'CalendarController@edit')->name('calendar.edit'); 4 Route::post('/calendar/{skiday}/edit', 'CalendarController@update')->name('calendar.update'); 5});
SkidayPolicy
1<?php 2 3namespace App\Policies; 4 5use App\User; 6use App\Skiday; 7use Illuminate\Auth\Access\HandlesAuthorization; 8 9class SkidayPolicy 10{ 11 use HandlesAuthorization; 12 13 /** 14 * Create a new policy instance. 15 * 16 * @return void 17 */ 18 public function __construct() 19 { 20 // 21 } 22 23 public function update(User $user, Skiday $skiday) 24 { 25 return $user->id === $skiday->user_id; 26 } 27}
AuthServiceProvider
1use App\Skiday; 2use App\User; 3use App\Policies\SkidayPolicy; 4 5class AuthServiceProvider extends ServiceProvider 6{ 7 protected $policies = [ 8 Skiday::class => SkidayPolicy::class, 9 ]; 10}
controller
1public function edit($skiday) 2 { 3 $skiday = Skiday::find($skiday); 4 return view('calendar.edit', ['skiday' => $skiday]); 5 }
どこに原因があるのかわからず困っています。
どなたか知恵を貸していただきたいです。
よろしくお願いします。
php7.4.3
laravel6.18
回答3件
あなたの回答
tips
プレビュー