2017-10-12 3 views
0

Je 3 types d'utilisateurs dans l'application comme ci-dessous:authentifier d'autres table Laravel 5.4

1. Super Admin 
2. Normal User 
3. Staff 

Je ne mis en place pour le Super administrateur mais que vous voulez définir système de connexion pour le « personnel » utilisateur. J'ai créé un nom de dossier comme Staff dans le dossier des contrôleurs /var/www/html/projecy_name/app/Http/Controllers et créé un contrôleur avec le nom SessionsController.php, voici le contenu de ce fichier:

<?php 

namespace App\Http\Controllers\Staff; 

use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
use App\Staff; 

class SessionsController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('guest',['except'=>'destroy']); 
    } 

    public function create() 
    { 
     return view('staffsession.create'); 
    } 

    public function store() 
    { 
     echo request("email"); 
     $test = auth()->attempt(request(['email','password'])); 
     dd($test); 
     if(!auth()->attempt(request(['email','password']))) 
     { 
      Request()->session()->flash('error_msg', 'Please check your credentials and try again.'); 
      return back()->withErrors([ 
       'message' => 'Please check your credentials and try again.' 
      ]); 
     } 

     return redirect()->home(); 
    } 

    public function destroy() 
    { 
     auth()->logout(); 
     return redirect()->home(); 
    } 
} 
?> 

En fonction magasin(), il est par défaut va vérifier dans admins tableau, mais je veux qu'il doit être vérifier dans ma table tbl_staff.

Comment y parvenir?

Répondre

1

Vous devez définir une nouvelle garde et un nouveau fournisseur dans le fichier \config\auth.php. Ensuite, vous devez créer une nouvelle instance Guard avec le nouveau fournisseur. Il utilisera la nouvelle table pour l'authentification.

Placer une méthode guard() dans votre contrôleur de connexion:

use Illuminate\Support\Facades\Auth; 

protected function guard() 
{ 
    return Auth::guard('staff'); 
} 

Mise à jour:

Vous devez utiliser différemment vos méthodes, de sorte que cela fonctionne. Utilisez la méthode guard() au lieu de la méthode auth() car elle utilise la garde par défaut. Voir:

<?php 

namespace App\Http\Controllers\Staff; 

use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
use App\Staff; 
use Illuminate\Support\Facades\Auth; 

class SessionsController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('guest',['except'=>'destroy']); 
    } 

    protected function guard() 
    { 
     return Auth::guard('staff'); 
    } 

    public function create() 
    { 
     return view('staffsession.create'); 
    } 

    public function store() 
    { 
     if(!$this->guard()->attempt(request(['email','password']))) 
     { 
      Request()->session()->flash('error_msg', 'Please check your credentials and try again.'); 
      return back()->withErrors([ 
       'message' => 'Please check your credentials and try again.' 
      ]); 
     } 

     return redirect()->home(); 
    } 

    public function destroy() 
    { 
     auth()->logout(); 
     return redirect()->home(); 
    } 
} 
+0

me permettent de vérifier avec une solution pour –

+0

encore est la vérification dans le tableau par défaut –

+0

@PathikVejani S'il vous plaît vérifier ma réponse à jour –