Laravel 知識點

sunlight_w發表於2019-10-22

授權策略

建立策略類檔案

<?php

namespace App\Policies;

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

class UserPolicy
{
    use HandlesAuthorization;

    public function update(User $currentUser, User $user)
    {
        return $currentUser->id === $user->id;
    }
}

自動授權註冊

<?php

namespace App\Providers;
.
.
.
class AuthServiceProvider extends ServiceProvider
{
    .
    .
    .
    public function boot()
    {
        $this->registerPolicies();
        // 修改策略自動發現的邏輯
        Gate::guessPolicyNamesUsing(function ($modelClass) {
            // 動態返回模型對應的策略名稱,如:// 'App\Models\User' => 'App\Policies\UserPolicy',
            return 'App\Policies\\'.class_basename($modelClass).'Policy';
        });
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結