php artisan make:policy TaskPolicy –model=Task
Modele uygun hemen bir policy oluşturuyoruz. amaç bir önceki derste yaptığımız api auth için oluşturulan işlemlerden örneğin güncellemeyi sadece sahibi olduğu tasklarda yapabilsin diyeceğiz. amaç oraya bir kural koymak.
TaskController örneği;
1 2 3 4 5 6 7 8 9 10 11 12 |
use Illuminate\Support\Facades\Gate; class TaskController extends Controller { @@ -33,6 +34,8 @@ public function store(StoreTaskRequest $request) */ public function show(Task $task) { Gate::authorize('view', $task); return TaskResource::make($task); } |
gate ekledik ve show fonksiyonunda yer alan return öncesi gate ekledik.
taskpolicy içine de aşağıdaki kısmı ekledik. aslında true false değeri döndürüyor true ise gösteriyor gibi.
1 2 3 4 |
public function view(User $user, Task $task): bool { return $user->id === $task->user_id; } |
şimdi diğerleri için sırasıyla şunu yapıyoruz. sen resource bölümünde ilgili yerlere yazarsın
1 2 3 4 5 |
Gate::authorize('delete', $task); Gate::authorize('update', $task); Gate::authorize('view', $task); Gate::authorize('create', Task::class); Gate::authorize('viewAny', Task::class); |
taskpolicy son hali
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<?php namespace App\Policies; use App\Models\Task; use App\Models\User; use Illuminate\Auth\Access\Response; class TaskPolicy { /** * Determine whether the user can view any models. */ public function viewAny(User $user): bool { return true; } /** * Determine whether the user can view the model. */ public function view(User $user, Task $task): bool { return $user->id === $task->user_id; } /** * Determine whether the user can create models. */ public function create(User $user): bool { return true; } /** * Determine whether the user can update the model. */ public function update(User $user, Task $task): bool { return $user->id === $task->user_id; } /** * Determine whether the user can delete the model. */ public function delete(User $user, Task $task): bool { return $user->id === $task->user_id; } } |