Multiple Authentication

Par Dinatrium, il y a 7 ans


Bonjour;
Je souhaiterais faire un multi authentification pour séparer ma table recipients et admins sur des tables différentes.
J'ai suivi ce tutoriel: https://hdtuto.com/article/laravel-57-multiple-authentication-example
J'arrive à me connecter en admin ou en recipient mais une fois que je change de page la session n'est pas gardé.
Une idée d'où cela peut venir ?

web.php

Route::redirect('/', '/home'); Route::get('/login', 'AuthController@formLogin'); Route::post('/login', 'AuthController@processLogin'); Route::group([ 'middleware' => 'App\Http\Middleware\Authenticate' ], function () { Route::view('/home', 'home'); });

auth.php

<?php return [ 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'recipients', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins' ], 'api' => [ 'driver' => 'token', 'provider' => 'users', 'hash' => false, ], ], 'providers' => [ 'recipients' => [ 'driver' => 'eloquent', 'model' => App\Recipient::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => \App\Admin::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], ], ];

AuthController.php (Controller)

<?php namespace App\Http\Controllers; use App\Admin; use App\Recipient; use Illuminate\Http\Request; class AuthController extends Controller { private $viewPath = 'Account/'; private function errorLogin(int $code = 0) { switch ($code) { case 1: $error = 'Wrong email or password'; break; case 2: $error = 'Your blocked'; break; case 3: $error = 'Your company is blocked'; break; case 4: $error = 'Your email is not validated'; break; case 5: $error = 'Not find in our second database'; break; default: $error = 'Indisponible connection'; } return back()->withInput()->withErrors([ 'email' => $error ]); } private function auth(string $email, string $password, string $uType = 'web') { $auth = auth($uType)->attempt([ 'email' => $email, 'password' => $password ]); return $auth; } private function checkAuth(string $email, string $password): bool { if (!$this->auth($email, $password)) { if (!$this->auth($email, $password, 'admin')) { return false; } } auth()->logout(); return true; } public function formLogin() { if (auth()->guest()) { return view($this->viewPath . 'login'); } return redirect('/home'); } public function processLogin(Request $request) { $request->validate([ 'email' => ['required', 'email'], 'password' => ['required'] ]); if (!$this->checkAuth($request->email, $request->password)) { return $this->errorLogin(1); } $uType = 'web'; $user = Recipient::where('email', $request->email)->first(); if (!$user) { $user = Admin::where('email', $request->email)->firstOrFail(); $uType = 'admin'; } if ($user->blocked) { return $this->errorLogin(2); } $this->auth($request->email, $request->password, $uType); dd(auth('admin')); //dd(auth('recipient')); --> Ici c'est ok je suis bien log return redirect('/home'); } }

Authenticate.php (Middleware)

<?php namespace App\Http\Middleware; use Closure; class Authenticate { public function handle($request, Closure $next) { dd(auth('admin')); //dd(auth('recipient')); --> Ici plus rien return redirect('/login'); return $next($request); } }

Admin (Model)

<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable { }

Recipient (Model)

<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class Recipient extends Authenticatable { }

Apres login:
http://www.zupimages.net/viewer.php?id=19/18/jx1m.png

Une fois sur le middleware:
http://zupimages.net/viewer.php?id=19/18/5jdp.png

Aucune réponse