如何检查我的控制器中的权限

How to check permissions in my controller

我是 Laravel 的新手,我正在自己编写一个用户管理系统。 此时,

public function boot()
{
    Gate::before( function (User $user , $permission) {
        // App administrator
        if($user->getPermissions()->contains('appAll'))
        {
            return true;
        }
        // Permission check
        return $user->getPermissions()->contains($permission);
    });
}

在我的 AdminUserController 中,我可以这样检查权限:

public function index()
{
    if( Gate::check('createUser') || Gate::check('readUser') || Gate::check('updateUser') || Gate::check('deleteUser')) {
        return view('userMgmt/users/index', [
            'users' => User::getUsersWithRolesWithTexts()
        ]);
    }
    else
    {
        return redirect(route('home'))->withErrors('You do not have required permission');
    }
}

效果不错。

但是 这是用以下方法包装每个控制器方法的正确方法吗:

if( Gate::check(...) ...) {
    //Do what the method is supposed to do
}
else
{
    return redirect(route('SOME.ROUTE'))->withErrors('FUCK ALL');
}

如果有人能给我一些想法就太好了。 坦克你

有一个名为 authorize 的控制器辅助函数,您可以从扩展 App\Http\Controllers\Controller 的控制器中的任何方法调用它。此方法接受操作名称和模型,如果用户未被授权,它将抛出异常。因此,代替 if...else 语句,它将是一行:

public function update(Request $request, Post $post)
{
    $this->authorize('update', $post);

    // The current user can update the blog post...
}