Как отредактировать редирект после входа в мульти аутентификацию в laravel? - PullRequest
0 голосов
/ 19 октября 2018

Можете ли вы помочь мне в 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 разные ссылки:

  1. /login для пользователей и администраторов, когда isAdmin==1 и когда isAdmin==0.
  2. /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

...