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 協議》,轉載必須註明作者和本文連結