我目前正在尝试了解Laravel的功能。我最大的问题是身份验证过程。假设我有一个管理面板和一个用户面板。我在"用户"中有一个专栏。表" user_type" 1 =普通用户,2 =管理员用户。当用户登录用户登录表单时,laravel会检查用户信息,并确保普通用户登录的类型为1。如果是,则设置会话。但是,我如何检查用户是否是管理员或普通用户。任何帮助都非常感谢! :d
答案 0 :(得分:0)
您可以这样做:
if (auth()->user()->user_type == 2) {
// Do admin stuff
}
否则,您可以在User.php
public function getIsAdminAttribute()
{
return $this->user_type == 2;
}
然后您可以执行以下操作:
if (auth()->user()->is_admin) {
// Do admin stuff
}
答案 1 :(得分:0)
首先在你的web.php中你可以这样做:
Route::post('/login', 'Auth\LoginController@determineLoginType')->middleware('guest');
在您的LoginController.php
中,您可以执行以下操作:
public function determineLoginType(Request $request)
{
/**
* Here I am assuming that the email field on your user model is unique,
* therefore I am retrieving that specific user by the email they provided
* at the login form
*/
$user = \App\User::where('email', $request->email)->first();
if ($user && $user->user_type == 2) { // Check if the user exists & check their type.
return redirect('/admin-dashboard'); // If they're an admin redirect them to the admin dashboard.
}
return redirect('/home');
// Otherwise proceed normally and redirect the user to the normal home or dashboard.
}
当然,您应该扩展这一点,以包括用户提供无效电子邮件的内容,因此您应该将输入和错误重定向回来,例如,希望这与您正在寻找的内容类似。