自定义消息-Laravel 7-拒绝授权

时间:2020-09-01 11:20:17

标签: php laravel policies

我有一个控制器,该控制器在其功能上验证分配给Post模型的策略:

App \ Http \ Controllers \ PostController

class PostController extends Controller
{
    public function index(Request $request, Post $post) {
        
 $response = Gate::inspect('viewAny', $post);

    if ($response->allowed()) {
        echo 'valid';
    } else {
        echo 'invalid';
    }
    }
}

文件:PostPolicy

 public function viewAny(User $user)
 {
    return $user->role === 'admin' ? Response::allow() : Response::deny();
 }

当用户以admin身份登录时,它返回已登录admin的消息,如果不是admin,则返回403响应,我想用“用户不是管理员”之类的消息替换此403响应

1 个答案:

答案 0 :(得分:1)

您可以在控制器中的用户模型上使用can()cant()方法:

if ($user->cant('view-any', $post)) {
    return 'User is not administrator';
}

来源:Laravel Docs - Authorization