我有一个控制器,该控制器在其功能上验证分配给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响应
答案 0 :(得分:1)
您可以在控制器中的用户模型上使用can()
和cant()
方法:
if ($user->cant('view-any', $post)) {
return 'User is not administrator';
}