Laravel auth

teroristd

Registered
Здравейте, направих си default-овата register-login система в Laravel. Версията на фреймуорка е 5.5.28. Въпросът ми е как да я модифицирам да изпраща имейл до регистриралия се с линк за активация? В смисъл да не може да се логне преди да е активирал акаунта.
 
Как да не допускаш неактивен акаунт е документирано:
https://laravel.com/docs/5.6/authentication#authenticating-users

Относно линка за активация, аз бих се закачил за подходящият event:
https://laravel.com/docs/5.6/authentication#events
 
Благодаря за отговора, обаче нямам никакъв опит с Laravel и нищо не можах да разбрера, освен че трябва да имам някакво поле в базата active, което е ясно. Ще помоля за по-подробно описание на стъпките, къде и какво трябва да добавя.
 
Аз също нямам опит с Laravel, за това го отговорът ми е толкова абстрактен... :D
В общи линии, трябва да разбереш как се регистрират listener-и и да се закачиш за Registered. В listener-а, setActive(false), генерираш някакъв token и го запазваш при другите данни на юзъра, а после му пращаш мейл. Когато юзъра потвърди, setActive(true) и готово.
Виж, ако беше Symfony, щях и примерен код да ти напиша, но уви. :D
 
Ето аз съм писала един блог пост за това:
http://blog.phakeapps.com/2017/12/12/email-confirmation-for-new-users-in-laravel-5/

Само ще добавя, че в твоя случай, когато логваш хората с Auth::attempt() трябва да подадеш и колонката, че само активирани:

Код:
Auth::attempt(['email' => $email, 'password' => $password, 'activation' => null])
 
Fakeheal каза:
Ето аз съм писала един блог пост за това:
http://blog.phakeapps.com/2017/12/12/email-confirmation-for-new-users-in-laravel-5/

Супер ще го прегледам :).

Fakeheal каза:
Само ще добавя, че в твоя случай, когато логваш хората с Auth::attempt() трябва да подадеш и колонката, че само активирани:

Код:
Auth::attempt(['email' => $email, 'password' => $password, 'activation' => null])

Такова нещо нямам. Това го има в документацията като пример.
 
A mailtrap ще ми свърши ли работа за да тествам дали работи активацията? Един вид има ли смисъл да си правя акаунт там?
 
teroristd каза:
A mailtrap ще ми свърши ли работа за да тествам дали работи активацията? Един вид има ли смисъл да си правя акаунт там?
Принципно не, но е много удобно приложение, защото може да си тестваш всички мейли.

Например може да си направиш тестови потребители с мейли като:

test@test.com
test2@test.com
test3@test.com

и няма значение на кой от адресите по-горе пращаш мейл, всичко ще ти ходи на mailtrap.io акаунта.

Аз го намирам за удобно, като цяло може да постигнеш същото с gmail-ския си акаунт.

Ако мейла ти е terroristd@gmail.com:

terroristd+test1@gmail.com
terroristd+test2@gmail.com
terroristd+test3@gmail.com

Ще ги получаваш на terroristd@gmail.com, само че ще са адресирани до мейлите по-горе (за да ги различаваш).
 
teroristd каза:
Добре а за да тествам активацията какво ми трябва?

Да отвориш линка, който по принцип ще пращаш в мейла за активация?

Ако си следвал моя пост, в web.php (routes) сложи:
Код:
Route::get('/test', function() {
   $user = User::all()->first(); //или някой неактивиран User
   return redirect()->action('Auth\ActivateAccountController@activate', ['token' => $user->activation]));
});

Това ще те препрати на линка за потвърждение на акаунт.
 
teroristd каза:
Да и да активирам акаунта. Все едно съм на хостинг.

Аз лично ползвам услугите на mailgun:
https://www.mailgun.com/

- първите 10 000 мейла на месец са ти безплатни;
- не се занимаваш с мейл сървъри на твоя сървър;
- имат добър съпорт;
- добра интеграция в ларавел.

и съм много доволна.
 
А освен че трябва да се регистрирам какви настройки трябва да правя по Laravel за да работи?
 
teroristd каза:
А освен че трябва да се регистрирам какви настройки трябва да правя по Laravel за да работи?

Mailgun:
След като се регистрираш следвай инструкциите от тук:
https://app.mailgun.com/app/domains/new


После Laravel:
В .env файла добавяш:
Код:
MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=mg.tvoq-sait.bg <- каквото си написал в mailgun
MAILGUN_SECRET=SECRET_KEY_OT_MAILGUN <- каквото mailgun ти даде
 
Направих си регистрация в mailgun, обаче ми иска да верифицирам домейн. Дава ми примери с GoDaddy и разни други, само че аз нямам домейн. Какво да правя?
 
Fakeheal каза:
teroristd каза:
Направих си регистрация в mailgun, обаче ми иска да верифицирам домейн. Дава ми примери с GoDaddy и разни други, само че аз нямам домейн. Какво да правя?

Не ползваш мейлгън.

Успях да го направя :) . В mailgun има някакъв sandbox и с много четене и оправяне на някои грешки които ми даваше в Laravel го подкарах.

Благодаря за помощта.
 
Ок аз ще го ползвам само за тестове. В момента се уча на Laravel и още не мога да се ориентирам. Много фасади, трейтове и незнам си какво има в Laravel и съм в шах :D .
 

Горе