Нет авторизации после успешного входа в систему с помощью администратора - PullRequest
1 голос
/ 13 февраля 2020

Может кто-нибудь помочь мне понять, что я делаю неправильно?

Вот мой config / auth. php file

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
]

Вот мой LoginController Для администратора Вход

    namespace App\Http\Controllers\Admin\Auth;
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use Illuminate\Foundation\Auth\AuthenticatesUsers;
    use Redirect;
    use Illuminate\Contracts\Auth\Guard;
    use Illuminate\Support\Facades\Session;
    use Illuminate\Support\Facades\Auth;

    class LoginController extends Controller
    {
       use AuthenticatesUsers;
    public function __construct()
    {   
        $this->middleware('guest:admin');
    }

    /**
     * Function to show login form
     */
    public function fnToShowAdminLoginForm(){
        return view('Admin.Auth.loginForm');
    }

    /**
     * Function to check login credentials 
     */

     public function fnToSubmitAdminLogin(Request $request){
        $messsages = array(
            'emailOrphone.required'=>'You cant leave Email/Phone field empty',
            'password.required'=>'You cant leave password field empty',                   
        );

        $rules = array(
            'emailOrphone'=>'required',
            'password'=>'required',
        );

        $validator = \Validator::make($request->all(), $rules,$messsages);

        if ($validator->fails()) {
            return back()->withInput()->withErrors($validator->errors());
        }else{

            if(Auth::guard('admin')->attempt(['email' => filter_var($request->emailOrphone, FILTER_VALIDATE_EMAIL ), 'password' => $request->password],true) ){  
                //dd(Auth::guard('admin')->user()->name);////**Here i am getting the auth**                        
                return Redirect::intended('admin/login');
            }else{
                return back()->withInput()->withErrors(['upWorng'=>'Email/Phone Or Password does not match']);
            }
        }

     }


}

Вот мой маршрут в сети. php

    Route::prefix('/admin')->name('admin.')->namespace('Admin')->group(function(){
    Route::namespace('Auth')->group(function(){
        Route::get('login','LoginController@fnToShowAdminLoginForm')->name('dologin');
        Route::post('login','LoginController@fnToSubmitAdminLogin');
        Route::get('logout','LogoutController@dologout')->name('dologout');
    });
   Route::group(['middleware' => 'auth:admin'], function () {
        Route::get('colorList/master','ColorController@index')->name('color');
        Route::post('createColorMaster','ColorController@fnToCreateNewColor')->name('createColor');

    });

Вот мой контроллер с ударами после успешного входа в систему ColorController. php

    <?php

       namespace App\Http\Controllers\Admin;

       use App\Http\Controllers\Controller;
       use Illuminate\Http\Request;
       use App\Models\Colors;
       use Validator;
       use Illuminate\Support\Facades\Auth;
       use Session;

     class ColorController extends Controller
    {
    protected $loggedUser;

    public function __construct(){
        $this->middleware('auth:admin');
        dd(\Auth::guard('admin')->user());////I am not getting the auth here
        //$this->loggedUser = Auth::guard('admin')->user()->id;
    }
    public function index(){
        $colors = Colors::orderBy('color','ASC')->get();
        return view('Admin.Master.Color',compact('colors'));
    }   
   }

Вот мое промежуточное программное обеспечение RedirectIfAuthenticated

namespace App\Http\Middleware;

    use App\Providers\RouteServiceProvider;
    use Closure;
    use Illuminate\Support\Facades\Auth;

    class RedirectIfAuthenticated
    {
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {     

        if (Auth::guard($guard)->check()) {
            //dd(Auth::guard($guard));
            if ('admin' === $guard) {
                return redirect(route('admin.color'));
            }
            return redirect('/');
        }
        return $next($request);
    }
   }

Я могу войти в систему успешно, но когда я redirect () -> предназначен () ИЛИ redirect () -> to () Auth :: guard ( 'admin') не хранит никаких значений. Я не могу понять это. Я использую laravel 6.9.0 и понятия не имею, почему это не работает, где я делаю неправильно. Спасибо заранее ..!

...