我有两种不同的用户和管理员登录表单。我想要的是用户只应该以自己的形式登录,否则应该是一个错误,对于管理表单也是如此。
我的数据库中只有1个用户和管理员表。它们只有user_type不同,显然是“admin”和“user”
我正在做的是当用户尝试以管理员登录表单登录时,它会显示一条信息,上面写着“抱歉,您不是此网站的管理员”。但这意味着用户仍然登录。
我想要的是当尝试以管理员身份登录时,我根本不希望它访问系统。
到目前为止我的代码:
public function validateLoginResort(Request $requests){
$username = $requests->username;
$password = $requests->password;
$attempt = Auth::attempt([
'email' => $requests->username,
'password' => $requests->password,
]);
if(Auth::check()){
if(Auth::user()->type_user == 'admin'){
return redirect('home');
}
else{
Auth::logout();
return redirect('login');
}
}else{
return "Invalid input";
}
}
如果用户不是管理员,我尝试使用Auth::logout
,但我认为它不安全且完全正确。
我认为还有更好的方法可以做到这一点,你们可以就如何正确实施这一点提出建议吗?谢谢
答案 0 :(得分:0)
您可以先检查用户类型,然后在他/她是管理员时登录用户。
假设您的用户表名称是"用户"和相应的雄辩模型是#34;用户"然后你可以这样做:
$user = User::where('email', $request->get('email'))->first();
if (!$user || !\Hash::check($request['password'], $user->password)) {
return 'Invalid user credential';
}
if ($user->type_user !== 'admin') {
return 'Only admin allowed';
}
\Auth::login($user); // This is the key point.
return redirect('home');
答案 1 :(得分:0)
您正在努力在laravel中创建自定义代码,这是如何工作的。我建议您使用此处的laravel软件包:https://github.com/spatie/laravel-permission,该软件包可让您管理数据库中的用户权限和角色
谢谢