Skip to content

Laravel Policies and Gates: authorize actions in controllers

PHP Dasun Kalupahana 42 views

<?php

// php artisan make:policy PostPolicy --model=Post
public function update(User $user, Post $post): bool
{
    return $user->id === $post->user_id;
}

// Controller
use Illuminate\Support\Facades\Gate;

public function update(Request $request, Post $post)
{
    Gate::authorize('update', $post);
    // ...
}

Keeps permission rules in one policy class instead of scattering if checks. Gate::authorize throws a 403 when the check fails.

Learn more on the blog

Get new articles in your inbox

Practical tutorials and deep dives, about once a week. No spam, unsubscribe anytime.

Privacy policy

Add DEV Talk to your Home Screen

  1. 1 Tap the Share button in Safari's toolbar.
  2. 2 Scroll down and tap Add to Home Screen.
  3. 3 Tap Add. Open it from the Home Screen to read like an app and to turn on notifications with the bell.

We use cookies to improve your experience and analyze traffic. By continuing, you agree to our Privacy Policy.