如何在laravel中为特定用户提供视图访问权限?

时间:2016-12-09 13:27:57

标签: laravel

我有一个类别控制器,用于检查用户是否已登录

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

    }
    ...

我的分类路线是:

//Category Controller
Route::get('admin/category/{category}/edit', ['uses'=>'categoryController@edit','as'=>'admin.category.edit']);
Route::put('admin/category/{category}', ['uses'=>'categoryController@update','as'=>'admin.category.update']);
Route::get('admin/category/{category}', ['uses'=>'categoryController@show','as'=>'admin.category.show']);
Route::delete('admin/category/{category}', ['uses'=>'categoryController@destroy','as'=>'admin.category.destroy']);
Route::get('admin/category/create', ['uses'=>'categoryController@create','as'=>'admin.category.create']);
Route::get('admin/category', ['uses'=>'categoryController@index','as'=>'admin.category.index']);
Route::post('admin/category', ['uses'=>'categoryController@store','as'=>'admin.category.store']);

有没有办法只允许特定用户访问这些视图?

例如,如果用户电子邮件是admin123@gmail.com,则可以转到这些视图。

我知道我可以这样检查

if(Auth::user()->email == 'admin123@gmail.com')
{
   dd('admin Logged in');
}

但如果我转到个人观点并将所有内容放在if语句中,这是可能的。

有没有办法在控制器中处理此问题。

感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用middlewares进行此类工作。

来自文档

  

中间件提供了一种方便的机制,用于过滤进入应用程序的HTTP请求。例如,Laravel包含一个中间件,用于验证应用程序的用户是否经过身份验证。如果用户未经过身份验证,则中间件会将用户重定向到登录屏幕。但是,如果用户通过身份验证,则中间件将允许请求继续进入应用程序。

答案 1 :(得分:0)

您应该按路由组限制用户。请使用middleware

但是,如果您有复杂的逻辑,有时您可能想要检查用户是否是控制器,模型和其他类中的管理员。在这种情况下,您可以创建global helper isAdmin()并将其用于简单检查。例子:

if (isAdmin()) {
    // Do something
}

{{ isAdmin() ? 'active' : '' }}

答案 2 :(得分:0)

更好地定义用户角色,例如0表示管理员,1表示用户,2表示成员和检查用户角色

if(Auth::check())
{
  if(Auth::User()->user_type == 0)
  {
    return view('admin_dashboard);
  }
  else if(Auth::User()->user_type == 1)
  {
    return view('user_dashboard);
  }
  else if(Auth::User()->user_type == 2)
  {
    return view('member_dashboard);
  }
}