Verifikacia emailu po registracii
- Br0visT
- Člen | 17
Zdravím, som v Nette nový, neexistuje nejaký projekt z ktorého by som
mohol skopírovať jednoduchý emailový verifikátor? Resp. uživateľ sa
zaregistruje, na email mu príde verifikačný link, ktorý keď otvorí,
prepíše sa mu v tabuľke stlpec email_verified na 1 a už sa môže
prihlásiť.
Díky
Editoval Br0visT (30. 8. 2020 15:54)
- dakur
- Člen | 493
@Br0visT Ahoj, o ničem nevím, ale budou na to stačit dva presentery – jeden pro registraci, druhý pro ověření.
class RegistrationPresenter
{
public function actionDefault(): void
{}
public function renderDefault(): void
{}
public function createComponentRegistrationForm(): Form
{
// vytvoříš formulář pro registraci
$form = new Form();
// ...
$form->onSuccess[] = [$this, 'registrationFormSucceeded'];
return $form;
}
public function registrationFormSucceeded(): void
{
// v on success metodě uložíš uživatele do DB, sloupec email_verified nastavíš na 0
// taky generuješ token, který si uložíš do DB do dalšího sloupečku a pošleš jej v rámci odkazu na Activation:default v e-mailu
$token = \Nette\Utils\Random::generate(10);
$link = $this->link('Activation:default', ['token' => $token]);
// ...
}
}
class ActivationPresenter
{
public function actionDefault(string $token): void
{
// ověříš, že token existuje a updatneš sloupce v DB (email_verified na 1, token smažeš)
// pak přesměruješ uživatele třeba na hlavní stránku pro přihlášené
}
}
Nezapomeň taky při loginu kontrolovat, že email_verified už je 1.
Editoval dakur (31. 8. 2020 10:10)
- jiri.pudil
- Nette Blogger | 1032
Takže generovanie linku a posielanie emailu bude prebiehať už rovno tam, nie v presenteri.
V tom případě tě zajímá LinkGenerator
- Šaman
- Člen | 2667
Mailer je služba. Potřebuješ právě jeden mailer/databázi/memcache (pokud netypicky více, tak je to stále konkrétní počet a na každou si můžeš ukázat – tenhle SMTP mailer, pak druhý testovací dump Mailer)
Zatímco Message je datový objekt. Není to služba, je to něco co
dynamicky vzniklo v aplikaci jako data. Stejně jako třeba
new DateTime()
. Tyhle objekty většinou nemají žádné dalši
závislosti ani konfiguraci.
Pokud bys potřeboval vytvářet všechny Message
,
DateTime
, nebo třeba Form
na jednom místě, tak si
uděláš továrnu, která vytvoři nový objekt a nějak ho nastaví. Já to
dělám pro formuláře. Pak tahle továrna (např FormFactory
) je
službou a získáš ji přes DI. Ale formuláře, které vytváří budou opět
mimo DI.
Ještě jednou a zjednodušeně:
Mailer potřebuješ jeden pro odeslání mnoha zpráv. Je to služba. Kromě
toho má vlastní závislosti a DI je za nás vyřeší.
Message potřebuješ novou instanci pro každou odeslanou zprávu. Není to služba, nejde před DI.
Editoval Šaman (31. 8. 2020 22:42)
- Br0visT
- Člen | 17
Šaman napsal(a):
Mailer je služba. Potřebuješ právě jeden mailer/databázi/memcache (pokud netypicky více, tak je to stále konkrétní počet a na každou si můžeš ukázat – tenhle SMTP mailer, pak druhý testovací dump Mailer)
Zatímco Message je datový objekt. Není to služba, je to něco co dynamicky vzniklo v aplikaci jako data. Stejně jako třeba
new DateTime()
. Tyhle objekty většinou nemají žádné dalši závislosti ani konfiguraci.Pokud bys potřeboval vytvářet všechny
Message
,DateTime
, nebo třebaForm
na jednom místě, tak si uděláš továrnu, která vytvoři nový objekt a nějak ho nastaví. Já to dělám pro formuláře. Pak tahle továrna (napřFormFactory
) je službou a získáš ji přes DI. Ale formuláře, které vytváří budou opět mimo DI.
Ještě jednou a zjednodušeně:
Mailer potřebuješ jeden pro odeslání mnoha zpráv. Je to služba. Kromě toho má vlastní závislosti a DI je za nás vyřeší.Message potřebuješ novou instanci pro každou odeslanou zprávu. Není to služba, nejde před DI.
Chápem, ďakujem. Asi tú dokumentáciu na stránke moc nečítam no :D Škoda, že nie je žiadny video-kurz na Nette, to by fakt bodlo a pomohlo zároveň presadiť Nette medzi mladých a neskúsených ako ja. Vďaka za vysvetlenie, Grudl by si mohol zaplatiť ľudí ako ty, aby sa ten kurz naozaj natočil, to by bola pecka! :D
- dakur
- Člen | 493
David Grudl napsal(a):
Co bys byl za ten kurz ochotný zaplatit?
Já bych třeba čekal, že taková videa budou přímo v dokumentaci. 🙂 Už mě víckrát napadlo, že to tam chybí. Já vím, že peníze. Ale bavíme-li se o tom, aby framework byl snadno uchopitelný pro začátečníky bez valných programátorských zkušeností, pak právě tato videa by je měla nenápadně do principů programování (a navíc v kontextu Nette) zasvětit. Text je na to moc ukecanej. Ale začátečníci ti za to asi nezaplatí. 🙂 (Just my opinion.)
Editoval dakur (2. 9. 2020 14:30)
- Václav Kraus
- Člen | 77
dakur napsal(a):
David Grudl napsal(a):
Co bys byl za ten kurz ochotný zaplatit?
Já bych třeba čekal, že taková videa budou přímo v dokumentaci. 🙂 Už mě víckrát napadlo, že to tam chybí. Já vím, že peníze. Ale bavíme-li se o tom, aby framework byl snadno uchopitelný pro začátečníky bez valných programátorských zkušeností, pak právě tato videa by je měla nenápadně do principů programování (a navíc v kontextu Nette) zasvětit. Text je na to moc ukecanej. Ale začátečníci ti za to asi nezaplatí. 🙂 (Just my opinion.)
Video stárne s každou verzí frameworku. A upravuje je výrazně hůř než text. Mě by se líbil koncept Laracastu. Jen tady je na to asi malá cílovka.
Opravdu někde mají video jako součást dokumentace? :)
- David Grudl
- Nette Core | 8239
Je zajímavé, že se za celou dobu nikdo do konceptu videí ala Laracast nepustil. Asi prostě čeští programátoři nemají v sobě dost podnikavosti.
- Pavel Kravčík
- Člen | 1196
David Grudl napsal(a):
Co bys byl za ten kurz ochotný zaplatit?
Sice je špatně aktualizovaná stránka s partnery, ale dle součtu už jsme dosáhli tohoto bodu:
Pokud bude tento cíl splněn, budeme mít rozpočet na vylepšování webu, dokumentace, můžeme tvořit obsah (články, videa), ze kterého bude mít prospěch celá komunita.
Takže, pokud to bylo v plánu, klidně by se mohlo někomu zaplatit a ideálně nováčci jako @Br0visT by mohli vytipovat oblasti ze kterých by ta videa chtěli. Myslím, že většina nás z fóra už nedokáže odhadnout, co začátečníky pálí nejvíc. :)
- David Grudl
- Nette Core | 8239
Toho bodu se bohužel nikdy nedosáhlo. Ale přesto je dokumentace téměř celá přepsaná, web má stovky inovací, ale na videa už nedojde.
- Pavel Kravčík
- Člen | 1196
Aha, co jsem počítal „bajvoko“, tak mi to vyšlo kolem 220k (počet partnerů x jejich příspěvek). Pointa byla, že budocnost je vždy v nové generaci, tak proč jim nevyjít vstříc.
- David Grudl
- Nette Core | 8239
Zkusme to vzít ještě takto: jak bys rozložil, kolik % z tvého příspěvku na Nette půjde na vývoj, kolik na docku a web, a kolik na videa pro novou generaci?
- Pavel Kravčík
- Člen | 1196
@DavidGrudl: To je o té pozici, ve které se kdo nachází. Jelikož si juniory zaškolujeme sami a máme nadstavbu, tak ten příspěvek firmy by dávalo smysl věnovat 100% na vývoj. V pozici začátečníka by ten poměr byl jiný hádám, ale to těžko říct.
- Br0visT
- Člen | 17
David Grudl napsal(a):
Co bys byl za ten kurz ochotný zaplatit?
Sorry, dlhšie som tu nebol. Čo sa týka peňazí, tak ja ku kurzom pristupujem štýlom, že je to skôr investícia, jak nejaký výdaj. Samozrejme pokiaľ sa jedná o čiastku ktorá nezabolí. Ale tak príklad uvediem napr Udemy, kde som už kúpil 4–5 kurzov, v hodnote 10–20€. Dostal som ± 10 – 15 hodín videí, kde som sa naučil základy a bol som spokojný, že základom frameworku rozumiem a môžem tvoriť už od začiatku trochu kvalitnejší kód. Taktiež čo sa týka obsahu, kurzy sa dajú rozlíšiť aj na Beginner, Intermediate, Advanced, Extras,… atd. Dokonca som si na 2 mesiace platil Symfonycasts, nejak 20€ mesačne a nezruinovalo ma to. Každý je však iný, niekto do toho dá pár eur a niekto sa radšej „trápi“ s dokumentáciou, hľadá kopu vecí na fóre, ktoré by sa ľudia naučili, len čo by pozreli video. Ja si radšej pozriem video, naučím sa základy a štruktúru kódu od niekoho, kto v tom robí 10 rokov, ako na všetko prichádzať sám a vždycky prerábať kostru programu, keď prídem na niečo nové.