Laravel 没有包的权限

Laravel Permissions without package

我正在学习本教程 https://learn2torials.com/a/laravel-authentication-based-on-roles

工作正常而且实现起来非常简单,但我想隐藏一些管理员角色的路由,所以我需要实现权限,比如 'can_view'、'can_update' 等。我读了一些关于盖茨和政策,但我仍然感到困惑。

是否有扩展本教程的简单方法?我想避免使用包 Spatie/Permissions.

提前致谢!

您可以使用策略轻松解决此问题。

只需在 app\Policies folder 中使用您的策略定义创建一个文件:

<?php

namespace App\Policies;

use App\Models\User;
use App\Models\Expedient;

class ExpedientPolicy
{
  /**
    * Editing allowed for the person in charge of an open expedient
    * @param  \App\Models\User       $user
    * @param  \App\Models\Expedient  $expedient
    * @return bool
    */
  public function editExp(User $user, Expedient $expedient) { 
    return (!$expedient->exp_close && ($expedient->responsible == $user->id));
  }
}

并在app\Providers\AuthServiceProvider.php中注册:

    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
        Expedient::class => ExpedientPolicy::class,
    ];

现在您可以将此政策与

一起使用

@can('editExp', $expedient)