Laravel检查函数构造中的用户角色

时间:2018-05-04 06:40:35

标签: php laravel

我想让整个控制器仅供管理员使用,但当我尝试访问普通用户帐户时,他们仍然可以访问AdminController中的方法:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AdminController extends Controller
{
    public function __construct(Request $request)
    {
        $this->middleware('auth');

        if (!Auth::guest())
        {
            if (!$request->user()->hasRole('admin'))
            {
                return redirect('/');
            }
        } 

        else 
        {
            return redirect('/');
        }
    }

    public function index()
    {
        return view('admin.index');
    }
}

以下是检查角色的User模型:

public function roles()
    {
        return $this->belongsToMany(Role::class);
    }

    public function hasRole($role)
    {
        return null !== $this->roles()->where('name', $role)->first();
    }

1 个答案:

答案 0 :(得分:2)

您可以在构造函数中注册为您执行此操作的中间件:

public function __construct()
{
    $this->middleware('adminOnly');
}