2016-06-08 8 views
0

Ich habe eine Benutzer-Tabelle, die jedes Detail des Benutzers enthält, einschließlich eines Feldes namens 'isActive', das ein Boolescher Wert ist.Wie registriere ich einen aktiven Benutzer in Laravel 5.2?

Ich möchte den Benutzer anmelden, wenn die 'isActive = 1' und auch ich möchte den Benutzer zurück auf die Anmeldeseite umleiten, wenn die 'isActive = 0'.

Mein Code ist unten:

public function postSignIn(Request $request) 

{ 
    $this->validate($request, [ 
    'username' => 'required', 
    'password' => 'required' 
    ]); 

    if(Auth::attempt(['username' => $request['username'], 'password' => $request['password']])) { 
    return redirect()->route('home'); 
    } 
} 

Der Code über mir normalerweise signieren können. Mit oder ohne Aufruf des isActive-Feldes.

Antwort

1

Per Documentation,

Wenn Sie möchten, können Sie auch zusätzliche Bedingungen für die Authentifizierung Abfrage zusätzlich zu den Benutzern E-Mail oder Benutzername und Passwort hinzufügen. Für Beispiel können wir, dass Benutzer, die als "aktiv" überprüfen:

In Ihrem Fall müssen Sie nur hinzufügen 'isActive' => 1 in Array.

sollte Ihr Code sein: -

if (Auth::attempt(['username' => $request['username'], 'password' => $request['password'],'isActive' => 1])) { 
    // The user is active, not suspended, and exists. 
} 
else{ 
    // The user is Inactive, suspended, or not exists. 
    return redirect()->route('home'); 
} 
+0

Danke. Das funktioniert – edmond

+0

Sie sind herzlich willkommen :-) –

+0

Ich habe auf mehr Frage. Zum Beispiel ist mein Benutzer angemeldet und ich entscheide mich, sie zu deaktivieren. – edmond

1

einfach das zusätzliche Feld in die Methode attempt hinzufügen

if(Auth::attempt([ 
    'username' => $request['username'], 
    'password' => $request['password'], 
    'isActive' => 1, 
    ]) 
) 
{ 
    return redirect()->route('home'); 
} 

Das alles in the documentation bedeckt ist.

+0

Danke, das funktioniert – edmond

+0

@edmond könntest du vielleicht die Antwort upvoten und/oder annehmen? – Mei

1

Ich weiß nicht, wo Sie Ihren Code bekommen, denn meiner ist massiv anders. Aktualisieren Sie auf 5.2 oder installieren Sie es durch eine neue Installation von 5.2? Hier ist, was ich in meiner Login-Methode habe:

if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) { 
     return $this->handleUserWasAuthenticated($request, $throttles); 
    } 

Ich habe nicht die Funktionalität erinnert außer Kraft setzen möchte, so dass ich auf diese Weise:

/** 
* Get the needed authorization credentials from the request. 
* 
* @param \Illuminate\Http\Request $request 
* @return array 
*/ 
protected function getCredentials(Request $request) 
{ 
    $request = $request->only($this->loginUsername(), 'password'); 
    $request['active'] = true; 
    return $request; 
} 

Grundsätzlich hinzufügen $request['active'] = true; zur getCredential Methode in Ihrem App/Http/Controllers/Auth/AuthController und Bob ist dein Onkel.

+0

Vielen Dank für das Teilen. – neo108

Verwandte Themen