Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyłączenie automatycznego logowania po rejestracji w Laravelu 5.8
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie.
Od. paru dni uczę się Laravela i napotkałem na mały problem. Korzystam z wbudowanej w Laravela funkcji rejestracji i logowania.
Po zarejestrowaniu nowego użytkownika mam opcję wymagania aktywacji maila (na mail użytkownika wysyłany jest link aktywacyjny). To działa poprawnie.

Problemem jest dla mnie to, że po zarejestrowaniu użytkownik jest od razu logowany. Chciałbym żeby użytkownik do czasu aktywacji maila nie mógł się zalogować.

W jaki sposób mogę to zrobić?
ostrylg
Klasa RegisterController korzysta z Traita RegistersUsers, tam jest funkcja register() która zawiera:

  1. public function register(Request $request)
  2. {
  3. $this->validator($request->all())->validate();
  4.  
  5. event(new Registered($user = $this->create($request->all())));
  6.  
  7. $this->guard()->login($user);
  8.  
  9. return $this->registered($request, $user)
  10. ?: redirect($this->redirectPath());
  11. }


Linia kodu

  1. $this->guard()->login($user);


jest odpowiedzialna za logowanie po rejestracji

Nadpisz tą funkcję bez tej linijki i powinno być OK.
northwest
Dziękuje bardzo smile.gif
A w jaki sposób zablokować możliwość zalogowania użytkownika bez weryfikacji wcześniejszej (kliknięcia linka z maila)?

Mam taki web.php:
  1. Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {
  2. Route::get('/', 'BackendController@index')->name('adminHome')->middleware('verified');
  3. Route::get('/myObjects', 'BackendController@myObjects')->name('myObjects')->middleware('verified');
  4. Route::get('/saveObject', 'BackendController@saveObject')->name('saveObject')->middleware('verified');
  5. Route::get('/profile', 'BackendController@profile')->name('profile')->middleware('verified');
  6. Route::get('/saveRoom', 'BackendController@saveRoom')->name('saveRoom')->middleware('verified');
  7. Route::get('/cities', 'BackendController@cities')->name('cities.index')->middleware('verified');
  8. });
  9.  
  10.  
  11. Auth::routes(['verify' => true]);
  12.  



Pomimo iż użytkownik ma niezweryfikowany email (pusta kolumna email_verified_at w bazie) - to mogę się na takie konto zalogować sad.gif
Pyton_000
Przeczytaj jeszcze 2x https://laravel.com/docs/5.8/verification#v...ication-routing
northwest
kurczę, chyba nie wiem co skopałem sad.gif
Pyton_000
To co dodałeś ma iść do kontrolera, a jeśli chcesz w routingu to masz dodać middleware jak na drugim przykładzie
northwest
Tak, chciałbym mieć to oznaczane z poziomu routingu.


czyli nie mogę tego zrobić w taki sposób:

  1. Route::get('/cities', 'BackendController@cities')->name('cities.index')->middleware('verified');

?
Pyton_000
a sprawdziłeś?
northwest
nie działa sad.gif tylko nie łapię dlaczego:/ jest to dodane do węzła w routingu to powinno działać?
Pyton_000
A masz zaimplementowany interface

Kod
Illuminate\Contracts\Auth\MustVerifyEmail


dla User?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.