ログインしているユーザーとフォルダーのユーザーIDが同じ場合のみ表示させるように設定しているが404エラーが発生してしまう。
ポリシークラスを利用し処理をおこなっている。
web.php
<?php Route::group(['middleware' => 'auth'], function() { Route::get('/', 'HomeController@index')->name('home'); Route::post('/folders/create', 'FolderController@create'); Route::get('/folders/create', 'FolderController@showCreateForm')->name('folders.create'); Route::group(['middleware' => 'can:view,folder'], function () { Route::get('/folders/{folder}/tasks', 'TaskController@index')->name('tasks.index'); }); Route::get('/folders/{folder}/tasks/create', 'TaskController@showCreateForm')->name('tasks.create'); Route::post('/folders/{folder}/tasks/create', 'TaskController@create'); Route::get('/folders/{folder}/tasks/{task}/edit', 'TaskController@showEditForm')->name('tasks.edit'); Route::post('/folders/{folder}/tasks/{task}/edit', 'TaskController@edit'); }); Auth::routes();
AuthServiceProvider.php
<?php namespace App\Providers; use App\Folder; use App\Policies\FolderPolicy; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; class AuthServiceProvider extends ServiceProvider { /** * The policy mappings for the application. * * @var array */ protected $policies = [ Folder::class => FolderPolicy::class, ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); // } }
FolderPolicy.php
<?php namespace App\Policies; use App\Folder; use App\User; class FolderPolicy { /** * フォルダの閲覧権限 * @param User $user * @param Folder $folder * @return bool */ public function view(User $user, Folder $folder) { return $user->id === $folder->user_id; } }
ポリシークラスでユーザーIDとフォルダーのユーザーIDを紐づけてるのですが適用されません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。