Попытка реализовать Multi Auth в Laravel 5.8, не удается войти - PullRequest
0 голосов
/ 17 апреля 2020

Создание приложения с двумя разными пользователями, пользователями и Proveedores, имеющим Proveeedores в качестве модели, со своей собственной таблицей, пытающимся войти в систему как пользователь Proveedor и способным сделать это. Auth :: try () возвращает false и не может войти. Никаких ошибок.

Это мой код;

 public function login(Request $request){

        $credentials = $request->only('email', 'password')

        if(Auth::guard('proveedor')->attempt($credentials)){

            return view('proveedores-panel')->with('status', 'You are Logged In as Proveedor');

        }else{
            return redirect ('/');
        }
        //return view('proveedores-panel');
    }

Я тоже пробую это

 public function login(Request $request){

        $credentials = $request->only('email', 'password')

        if(Auth::guard('proveedor')->attempt($credentials)){

            return view('proveedores-panel')->with('status', 'You are Logged In as Proveedor');

        }else{
            return redirect ('/');
        }
        //return view('proveedores-panel');
    }

, но всегда возвращаю false и перенаправляет меня домой. Проверено на пользователя и все нормально. Надеюсь, кто-то может помочь, я пробовал много вещей.

это мой конфиг / аутентификация. php


'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    'proveedores' => [
        'driver' => 'eloquent',
        'model' => App\Proveedores::class, 
    ],

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

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],

        'proveedor' => [
            'driver' => 'session',
            'provider' => 'proveedores',
        ],

        'proveedor-api' => [
            'driver' => 'token',
            'provider' => 'proveedores',
        ],    

    ],  
----------
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'proveedores' => [
            'driver' => 'eloquent',
            'model' =>  App\Proveedores::class,
        ],

моя модель Proveedores

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticable;
use App\User;
use App\Tarea;

class Proveedores extends Authenticable
{

    use Notifiable;

    protected $guard = 'proveedor';
      /**
      * The attributes that are mass assignable.
      *
      * @var array
      */
      protected $fillable = [
        'email', 'password',
    ];
     /**
      * The attributes that should be hidden for arrays.
      *
      * @var array
      */
    protected $hidden = [
        'password', 'remember_token',
    ];

мое RedirectIfПодлинное промежуточное ПО

 public function handle($request, Closure $next, $guard = null)
    {   //dd($request);
          switch($guard){
                case 'proveedor' :
                 if(Auth::guard($guard)->check()){
                     return redirect()->route('proveedores-home');
                  }
                break;

               default:
                if (Auth::guard($guard)->check()) {
                return redirect('/home');
                }
                break;
            }    
        return $next($request);
    }

Наконец, мой ProveedoresLoginController

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
//use Auth;

class ProveedorLoginController extends Controller
{
    /**
     * Show the application’s login form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showLoginForm()
    {
        return view('proveedores-login');
    }
    protected function guard(){
        return Auth::guard('proveedor');
    }

    use AuthenticatesUsers;
    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/proveedores-panel';
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
       // $this->middleware('guest:proveedor')->except('logout');
    }
    public function proveedoresHome(){
        return view('proveedores-panel');
    }

    public function login(Request $request){
        //dd($request);
        //dd(Auth::guard('proveedor'));
        $credentials = $request->only('email', 'password')

        // [
        //     'email' => $request->email,
        //     'password' =>$request->password
        // ];
        $user = Auth::guard('proveedor')->check();

        //dd($user);
        if(Auth::attempt($credentials)){
           dd(Auth::guard('proveedor'));
            return view('proveedores-panel')->with('status', 'You are Logged In as Proveedor');

        }else{
            return redirect ('/');
        }
        //return view('proveedores-panel');
    }
}

Спасибо!

...