2017-11-02 2 views
2

In meinem Laravel 5.5-Anwendung mit Standard-Auth-System, Ich versuche, eine Login-Prozedur wie dies zu implementieren,Der Benutzer muss Administrator Genehmigung nach für Login Registrierung und redirect zur Login-Seite direkt nach der Anmeldung

1.Ich haben eine is_approved Feld in users Tabelle, die standardmäßig 0 ist;

2.Falls Admin einen Benutzer genehmigt, wird es 1 und Benutzer kann sich anmelden.

3.User wird Seite nach der Registrierung mit einer Meldung anmelden Umleiten „Du erfolgreich gewesen registered.Please warte auf die Admin Genehmigung ".

Wenn ein Benutzer registriert ist, sollte er auf die Anmeldeseite statt nach Hause weitergeleitet werden und wenn er versucht, sich auf der Anmeldeseite mit E-Mail und Passwort anzumelden, sollte er sagen: "Sie sind noch nicht zugelassen!".

Was muss ich dafür in Laravel Authentifizierungssystem ändern?

+0

Es gibt viele Möglichkeiten, dies zu erreichen. Sie können eine 'protected function versuchLogin (Request $ request)' in Ihrem Login-Controller hinzufügen, um das Äquivalent [Merkmal 1] zu überschreiben (https://github.com/laravel/framework/blob/5.5/src/Illuminate/Foundation/Auth /AuthenticatesUsers.php#L74) oder Sie können eine Middleware hinzufügen, um zu prüfen, ob sich ein Benutzer angemeldet hat und sie abmeldet, wenn sie nicht genehmigt sind, und viele andere Möglichkeiten. Zuerst sollten Sie einen Versuch machen und dann eine Frage stellen, wenn Sie ein konkretes Programmierproblem haben. – apokryfos

+0

Ich registriere den Benutzer und es bringt ihn nach Hause. Ich bin nicht ganz sicher, welches Merkmal oder Controller ich für dieses Problem ändern muss. – Jason

Antwort

2

I außer Kraft setzen und die register Methode in meinem RegisterController,

public function register(Request $request) 
    { 
     $this->validator($request->all())->validate(); 

     event(new Registered($user = $this->create($request->all()))); 

     return redirect()->back()->with('success', 'You have been successfully registered!. Please wait for the admin approval'); 
    } 

und in meinem LoginController ich die credentials Methode überschreiben und ändern ändern,

public function credentials(Request $request) 
    { 
     return [ 
      'email' => $request->email, 
      'password' => $request->password, 
      'is_approved' => 1, 
     ]; 
    } 

Sein perfekt funktioniert!

Verwandte Themen