2016-12-25 4 views
1

Ich bin in meinem Projekt stecken. Ich möchte, dass der Benutzer sich mit E-Mail oder Handy anmelden kann. Das funktioniert ganz gut. Aber jetzt möchte ich, dass nur der aktive Benutzer sich mit E-Mail oder Handy anmelden kann. Ich habe ein aktives Feld in meiner Datenbank, die auf 1 gesetzt wird, wenn ein Benutzer aktiv ist, oder wenn ein Benutzer inaktiv ist, wird es auf 0 gesetzt. Aber ich weiß nicht, wie man das macht. Bitte Jungs helfen mir das zu lösen. Ich benutze Laravel 5.3.Laravel Authentifikation funktioniert nicht wie in Laravel 5.3

Mein LoginController Code ist

<?php 
namespace App\Http\Controllers\Auth; 
use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 

class LoginController extends Controller 
{ 
    use AuthenticatesUsers; 
    protected $redirectTo = '/home'; 
    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 
    protected $username = 'email'; 
    public function loginNameOrEmail(Request $request) 
    { 
     $field = filter_var($request->input('email'), FILTER_VALIDATE_EMAIL) ? 'email' : 'mobile'; 
     $request->merge([$field => $request->input('email')]); 
     $this->username = $field; 
     return $this->login($request);  
    } 
    public function username() 
    { 
     return $this->username; 
    } 
    protected function authenticated($request, $user) 
    { 
     if($user->is_admin == 1) { 
      return redirect()->intended('dashboard'); 
     } 
     return redirect()->intended('/home'); 
    } 
} 

Antwort

1

Sie auch zusätzliche Bedingungen an die Authentifizierungsabfrage zusätzlich zu den Benutzern E-Mail und Passwort hinzufügen.

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) { 
    // The user is active, not suspended, and exists. 
} 

aktualisieren

Die einfachste Art und Weise außer Kraft zu setzen ist die credentials Methode als: Zum Beispiel können wir, dass Benutzer markiert als „aktiv“ überprüfen

protected function credentials(Request $request) { 

     $request['active'] = 1; 
     return $request->only($this->username(), 'password', 'active'); 
} 

diese Methode hinzufügen in Ihrem LoginController.

Docs

+0

Wenn ich dieses Add es gibt Fehler mir, dass FatalErrorException in LoginController.php Linie. 47: Class 'App \ Http \ Controllers \ Auth \ Auth' nicht gefunden @ Amit –

+0

Wie konnte ich überschreiben Die ' Login-Methode. Willst du mir ein Beispiel geben? –

+0

Wenn ich dies überschreibe gibt es mir einen Fehler und ich kann mich nicht mit E-Mail oder Handy anmelden –

Verwandte Themen