我在代码中使用了laravel的授权,并在我的服务提供者中定义了before方法,如文档中所示:
public function before($user, $ability)
{
if ($user->email == 'super@mail.com') {
return true;
}
}
有时我需要知道检查是否被截获。因此,我想检查是否使用了这种拦截方法,而不是检查不同地方的邮件(或超级用户的任何其他条件)。我的意思是不是一次又一次地在不同的地方使用这个(如果电子邮件是相同的......)条件。我只想将此超级管理员条件设置一次(在服务提供商中),然后在需要时进行检查。类似的东西:
\Gate::isIntercepted
答案 0 :(得分:2)
您可以返回授权响应,而不是简单地返回true
:
public function before($user, $ability)
{
if ($user->email == 'super@mail.com') {
return $this->allow('superadmin');
}
}
如果您使用authorize
:
public function update(Post $post)
{
$response = $this->authorize($post);
if ($reponse->message() == 'superadmin') {
// do something
}
}