Can you help me in multi auth of laravel?
Now i use one table (users) with two guard web and admin, but the same model related (User
)
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->boolean('isAdmin')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
This Web (Routes.php)
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/login', 'Auth\LoginController@Loginuser')->name('login');
Route::post('/login', 'Auth\LoginController@userLogin')->name('login');
Route::group(['middleware' => ['auth','admin']], function () {
Route::get('/admin', ['as' => 'admin.home', 'uses' =>
'AdminController@index']);
});
Route::get('/admin/login', ['as' => 'admin.login', 'uses' =>
'Auth\AdminLoginController@Loginadmin']);
Route::post('/admin/login', ['as' => 'admin.login', 'uses' =>
'Auth\AdminLoginController@adminLogin']);
I will use 2 different links:
-
/login
for user and admins, whenisAdmin==1
and whenisAdmin==0
. -
/admin/login
for admins only .
This code in admin middleware:
if (Auth::user()){
if(Auth::user()->isAdmin == "1"){
return $next($request);
}else{
Auth::logout();
return redirect()->route('admin.login');
}
}
return redirect()->route('admin.login');
and in Auth\AdminLoginController.php this code
protected $redirectTo = '/admin';
public function __construct()
{
$this->middleware('guest:admin')->except('logout');
}
public function Loginadmin()
{
return view('auth.login');
}
public function adminLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
if (Auth::guard('admin')->Where("isAdmin" , '1')->attempt(['email' =>
$request->email, 'password' => $request->password], $request->get('remember'))) {
return redirect()->intended('/admin');
}
return back()->withInput($request->only('email', 'remember'));
Now i have a problem.
When request /admin/login
normal users enter but I do not want them to enter, I want just admin to enter in this route.
Also, another problem happens when an admin enters the page redirects to /home
and not to /admin
as it should be.
What is the problem?
I apologize for the lengthening Best Regards