Home Backend Development PHP Tutorial Laravel permission control Gate Policy

Laravel permission control Gate Policy

Jun 05, 2018 am 09:46 AM
gate laravel

This article mainly introduces the Laravel permission control Gate Policy, which has certain reference value. Now I share it with everyone. Friends in need can refer to it

About permissions

The essence is to describe the judgment of whether to start production for an executable logical unit.

Definition There must be a user instance or unique identification parameter, and the usage resource associated with it. Usually a closure or function or method is used

Use to call the permission logical unit handle, parameter permission operation object, user information.

Source

The most basic permission control, ternary operator? :. Obviously conditional judgment, then jump to the corresponding execution logic.

Laravel’s idea is to separate execution logic (production code) and authorization (conditional judgment logic). Focus on the generation of conditions, and generally speaking, strengthen authorization logic (this is very useful for complex authorization). Postulate: All codes are started after the service registration is completed. So the following code will be registered. Its purpose is to find the logical body that truly authorizes judgment.

Gate::define('update articles', 'ArticlePolicy@update')
Copy after login

The first parameter is obviously just an authorization identifier (the handle parameter used to call), and the second parameter is the authorized logical execution body.

laravel authorization definition

Define authorization in the boot method of AuthServiceProvider

Gate::define('update articles', function ($user, $article) {
    return $user->id == $article->user_id;
});

Gate::define('update articles', 'ArticlePolicy@edit');
Copy after login
<?php

namespace App\Policies;

use App\User;
use App\Models\Article;

class ArticlePolicy
{
    public function update(User $user, Article $article)
    {
        return $user->id == $article->author_id;
    }
}
Copy after login

laravel authorized use

  1. Gate facade: Gate::allows('update articles', $article) and Gate::denies('update articles', $article).

  2. Controller introduces

    trait AuthorizesRequests

    $this->authorize('update articles', $article).

  3. Blade template: @can('update articles', $article) and @cannot('update articles', $article) instruction.

  4. User Model Example: $user->can('update articles', $article) and $user->cannot('update articles', $article).

Laravel Policy

In order to easily define and use authorization, Laravel introduces Policy based on Gate. Each method within the policy will be registered with the description of the gate::define method. So this is why after using the policy class registration, even if the authorization logic is not defined with the Gate facade, the form of Gate::allow('strategy class method') can still be used in the controller to make authorization judgments.

First define the authorization mapping relationship in the policies array attribute of AuthServiceProvider

/**
 * The policy mappings for the application.
 *
 * @var array
 */
protected $policies = [
    Article::class => ArticlePolicy::class,
];
Copy after login
<?php

namespace App\Policies;

use App\User;
use App\Models\Article;
use Illuminate\Auth\Access\HandlesAuthorization;

class ArticlePolicy
{
    use HandlesAuthorization;

    public function create(User $user)
    {
        return true;
    }

    public function delete(User $user, Article $article)
    {
        return $user->id == $article->author_id;
    }

     public function before($user, $ability)
    {
        if($user->isSuperAdmin()){
            return true;
        }
    }
 }
Copy after login

Note:

Policy just adds a HandlesAuthorization trait based on ordinary PHP classes.

In Policy, it will be called before all methods are executed. It is often used to handle administrator authorization logic.

Related recommendations:

How Laravel uses gulp to build front-end resources

The above is the detailed content of Laravel permission control Gate Policy. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to get the return code when email sending fails in Laravel? How to get the return code when email sending fails in Laravel? Apr 01, 2025 pm 02:45 PM

Method for obtaining the return code when Laravel email sending fails. When using Laravel to develop applications, you often encounter situations where you need to send verification codes. And in reality...

Laravel schedule task is not executed: What should I do if the task is not running after schedule: run command? Laravel schedule task is not executed: What should I do if the task is not running after schedule: run command? Mar 31, 2025 pm 11:24 PM

Laravel schedule task run unresponsive troubleshooting When using Laravel's schedule task scheduling, many developers will encounter this problem: schedule:run...

Review of the most complete historical price of Bitcoin (the latest version in 2025) Review of the most complete historical price of Bitcoin (the latest version in 2025) Mar 05, 2025 pm 08:42 PM

This article provides a detailed review of the latest version of Bitcoin’s historical price in 2025, and detailed the price trend of Bitcoin since its birth in 2009. From its initial obscurity to a global digital asset, Bitcoin price has experienced many surges and plummeted. This article will review its key milestones, such as the "pizza event" in 2010, the breakthrough of $1,000 in 2013, the breakthrough of $20,000 in 2017, and subsequent market adjustments. We will analyze the main factors affecting Bitcoin price fluctuations, including technological development, regulatory policies, market sentiment and macroeconomic environment, and make an outlook on future development trends to provide readers with a comprehensive reference for understanding the changes in Bitcoin price and help investors better conduct risk assessments.

In Laravel, how to deal with the situation where verification codes are failed to be sent by email? In Laravel, how to deal with the situation where verification codes are failed to be sent by email? Mar 31, 2025 pm 11:48 PM

The method of handling Laravel's email failure to send verification code is to use Laravel...

How to implement the custom table function of clicking to add data in dcat admin? How to implement the custom table function of clicking to add data in dcat admin? Apr 01, 2025 am 07:09 AM

How to implement the table function of custom click to add data in dcatadmin (laravel-admin) When using dcat...

Free market software app website Free market software app website Mar 05, 2025 pm 09:03 PM

This article introduces free digital asset quotation software apps and websites that can provide investors with key information such as real-time prices, price charts, transaction volume, fluctuations, market depth and news information to help investors make informed decisions. Compared with paid software, free software has the advantages of no cost, rich features, and easy operation. The article also guides users how to choose the right market software, and reminds users to pay attention to data sources, information accuracy and avoid excessive dependence, which ultimately helps investors better grasp the trends of the digital asset market. Want to know how to use free market software efficiently? Read the full text quickly!

Laravel Redis connection sharing: Why does the select method affect other connections? Laravel Redis connection sharing: Why does the select method affect other connections? Apr 01, 2025 am 07:45 AM

The impact of sharing of Redis connections in Laravel framework and select methods When using Laravel framework and Redis, developers may encounter a problem: through configuration...

Laravel multi-tenant extension stancl/tenancy: How to customize the host address of a tenant database connection? Laravel multi-tenant extension stancl/tenancy: How to customize the host address of a tenant database connection? Apr 01, 2025 am 09:09 AM

Custom tenant database connection in Laravel multi-tenant extension package stancl/tenancy When building multi-tenant applications using Laravel multi-tenant extension package stancl/tenancy,...

See all articles