Ak v Laravel aplikácii používam na správu používateľa (tj.registráciu, prihlásenie sa, odhlásenie, a pod.) autentifikačný package "JetStream", je možné tento nakonfigurovať tak, aby pri registrácii nového pouźívateľa odoslal verifikačný mail. Až po jeho potvrdení je registrovaný používateľ právoplatný a schopný sa korektne prihlásiť (a odhlásiť).
0.) predpokladám, že mám vytvorenú základnú kostru Laravel aplikácie "LaravelApp" a táto je umiestnená v adresári "..\LaravelApp\".
Tiež mám k dispozícii pripravenú MySQL databázu "db01", ktorú budem s touto aplikáciou používať.
1.) najprv si nastavím v Laravel aplikácii "LaravelApp" použitie tejto databáze. V súbore ".env" si nastavím:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db01
DB_USERNAME=root
DB_PASSWORD=****
2.) teraz si do aplikácie zinštalujem package "JetStream" - v aplikačnom/projektovom adresári spustiť príkaz:
composer require laravel/jetstream
čím sa tento package zinštaluje
3.) je potrebné ešte spustiť príkaz:
php artisan jetstream:install livewire
čo vytvorí migračné skripty, zinštaluje package "livewire/livewire" a (aktualizuje) niektoré ďalšie package, vypublikuje asset-y a vybuild-uje "vite v5.4.11" (12/2024) (pre produkciu)
4.) pred spustením samotnej migrácie je potrebné ešte upraviť v súbore:
\app\Providers\AppServiceProvider.php
kód takto:
...
use Illuminate\Support\Facades\Schema;
...
public function boot(): void {
Schema::defaultStringLength(191);
}
...
a v konfiguračnom súbore:
\config\database.php
upraviť kód:
'connections' => [
...
'mysql' => [
...
'engine' => 'InnoDB',
...
to je preventívna oprava, lebo inak je pri migrácii vypisovaná chyba databázových štruktúr a dát:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
5.) v prípade ak si potrebujem ešte zmeniť názov db-tabuľky do ktorej sa budú zapisovať registrovaní (a prihlásovaní) používatelia - viď postup uvedený v "Laravel: Prístup viacerých aplikácii na rovnakú databázu" v sekcii "C.) Tretia aplikácia "LaravelApp03" využivajúca JetStream package na autentifikáciu a manažovanie používateľa" (od bodu 5.)
6.) a teraz je možné už spustiť migračné skripty, príkazom:
php artisan migrate
čím sa v databáze "db01" je vytvorená požadovaná db-tabuľka/y
7.) a teraz je čas, nastaviť si/nakonfigurovať package "JetStream" tak aby odosielal verifikačné maily pri registrácii nového používateľa.
V súbore:
\config\fortify.php
si najprv odkomentovať vlastnosť "emailVerification()":
...
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
...
8.) a v súbore modelu "User":
\app\Models\User.php
tiež pridať/odkomentovať použitie "MustVerifyEmail" a pridať do definície class-u:
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
...
class User extends Authenticatable implements MustVerifyEmail {
...
9.) samozrejme musím mať v tejto Laravel aplikácii nastavené parametre na odosielanie mailov - napr.cez nejaký externý SMTP server/službu.
Toto nastavenie bude definované v konfiguračnom súbore ".env", napr.ak používam službu "MailTrap.io" to môže byť niečo také:
...
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=NejakyUcetNaMailTrapSluzbe
MAIL_PASSWORD=*****
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="NejakyMail@laravelapp.to"
MAIL_FROM_NAME="${APP_NAME}"
10.) ak teraz spustím v aplikácii developovací server príkazom:
php artisan serve
a spustiť v prehliadači URL:
http://localhost:8000/
zobrazí sa bežiaca Laravel aplikácia, kde mám k dispozícii aj "Login" a "Register".
Ak zaregistrujem nového používateľa, zobrazí sa na stránke info:
po verifikácii registrácie sa v db-tabuľke (pre info o registrovaných používateľoch) aktualizuje hodnota stlpca "email_verified_at", a registrovaný používateľ sa už vie priamo prihlásiť do tejto Laravel aplikácie.
Top comments (0)