Можете ли вы помочь мне в multi-auth of laravel?Теперь я использую одну таблицу (пользователей) с двумя защитными сетями и администратором, но с той же моделью, связанной (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();
});
Эта сеть ( 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']);
Я буду использовать 2 разные ссылки:
/login
для пользователей и администраторов, когда isAdmin==1
и когда isAdmin==0
. /admin/login
дляТолько для администраторов.
Этот код в промежуточном программном обеспечении администратора:
if (Auth::user()){
if(Auth::user()->isAdmin == "1"){
return $next($request);
}else{
Auth::logout();
return redirect()->route('admin.login');
}
}
return redirect()->route('admin.login');
и Auth \ AdminLoginController.php этот код
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'));
Теперь у меня есть проблема.
Когда запрос /admin/login
обычные пользователи входят, но я не хочу, чтобы они входили, я просто хочу, чтобы администратор вошел в этот маршрут.
Также другая проблемапроисходит, когда администратор заходит на страницу с перенаправлением на /home
, а не на /admin
, как и должно быть.
В чем проблема?
Я прошу прощения за удлинение Best Regards