關於 tcg/voyager 建立 Bread 後瀏覽許可權報錯的解決辦法

E1發表於2018-09-15

1. 出現的問題

使用 tcg/voyager 擴充套件包時,需要在後臺新增(比如)文章管理,也就是建立 Bread ,建立完成後給予使用者 browse/read/add/edit/delete 等許可權,但是在瀏覽文章 Bread 後,在 debug 模式下會報錯,提示: This action is unauthorized.

2. 出現此問題的原因

出現此問題,遂在 Github 上大致瀏覽了一下 issue,出現此問題的原因是,因為使用了自定義的 Policies ,導致 Voyager 無法通過授權。

3. 解決辦法

解決辦法就是建立一個 Trait ,比如 VoyagerPolicyTrait ,然後新增如下程式碼:

trait VoyagerPolicyTrait
{
    public function browse(User $user)
    {
        return $user->isAdmin();
    }

    public function edit(User $user)
    {
        return $user->isAdmin();
    }

    public function add(User $user)
    {
        return $user->isAdmin();
    }

    public function delete(User $user)
    {
        return $user->isAdmin();
    }

    public function read(User $user)
    {
        return $user->isAdmin();
    }
}

其中 $user->isAdmin() 是在 User 模型下新增的用來判斷是否為管理員的方法,返回值型別為 boolean
然後在文章的 Policy 下使用該 Trait :

class PostPolicy
{
    use HandlesAuthorization;
    use VoyagerPolicyTrait;
    ...
}

參考:the-control-group/voyager issue

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章