Notifikácie
Všetky notifikácie dedia od AuthenticationNotification a posielajú sa e-mailom. Pre guard ich nahradíte cez notifications.classes.<type> (podtrieda AuthenticationNotification), alebo nastavením na null vypnete:
| Typ | Trieda | Príjemca |
|---|---|---|
magic_link | MagicLinkNotification | účet |
email_otp | EmailOtpNotification | účet (kódy na prihlásenie aj opätovné overenie) |
verify_email | VerifyEmailNotification | účet |
reset_password | ResetPasswordNotification | účet |
password_changed | PasswordChangedNotification | účet (zmena, obnova, nastavenie) |
email_change_confirmation | ConfirmEmailChangeNotification | nová adresa |
email_change_requested | EmailChangeRequestedNotification | stará adresa |
email_changed | EmailChangedNotification | stará adresa |
account_exists | AccountExistsNotification | už používaná adresa |
invitation | InvitationNotification | pozvaný (jazyk pozvánky) |
new_device | NewDeviceLoginNotification | účet |
two_factor_enabled / two_factor_disabled | TwoFactorEnabledNotification / TwoFactorDisabledNotification | účet |
recovery_code_used | RecoveryCodeUsedNotification | účet |
passkey_added / passkey_removed | PasskeyAddedNotification / PasskeyRemovedNotification | účet |
account_locked | AccountLockedNotification | účet |
refresh_token_reuse | SuspiciousSessionNotification | účet (opakované použitie refresh tokenu; rodina relácií bola zrušená) |
sign_in_blocked | SignInBlockedNotification | účet (reakcia na riziko deny) |
unusual_sign_in | UnusualSignInNotification | účet (reakcia na riziko notify) |
Upozornenia na riziko
Reakcie na riziko majú vlastné e-maily. deny pošle SignInBlockedNotification (sign_in_blocked) — nikto sa neprihlásil; notify pošle po dokončení prihlásenia UnusualSignInNotification (unusual_sign_in) — jeho relácia je aktívna. Ani jeden netvrdí, že bola nejaká relácia odhlásená: SuspiciousSessionNotification (refresh_token_reuse) sa už týka len opätovného použitia refresh tokenu, preto upozornenia na riziko upravíte či vypnete cez sign_in_blocked a unusual_sign_in. Oba sa odošlú vždy, keď risk.assessor guardu vráti úroveň s reakciou deny alebo notify (viď Aktivita a riziko). Publikovaná konfigurácia, ktorá je staršia a ich kľúče v notifications.classes nemá, ich posiela tiež; nastavením kľúča na null jeden vypnete:
'guards' => [
'users' => [
'model' => App\Models\User::class,
'risk' => [
'assessor' => NewDeviceRisk::class,
'reactions' => ['elevated' => 'notify', 'high' => 'deny'],
],
'notifications' => [
'classes' => [
'sign_in_blocked' => App\Notifications\SignInBlocked::class, // extends AuthenticationNotification
'unusual_sign_in' => null, // null switches it off
],
],
],
],Doručovanie
- after_response (predvolené) — odpoveď pre známy účet nie je merateľne pomalšia než pre neznámy.
- queue — cez šifrovaný job (ShouldBeEncrypted) na notifications.connection / queue, takže odkaz ani kód nikdy neležia čitateľné vo fronte.
- sync — priamo, na vývoj.
Odkazy
Odkazy v e-mailoch sa skladajú len z konfigurácie (žiadne presmerovanie od klienta) so zástupnými symbolmi {frontend}, {app}, {guard}, {email} a {token}. Predvolene je tajomstvo vo fragmente URL (#token=…), takže sa nikdy nedostane do logu servera ani do hlavičky Referer — frontend prečíta location.hash a token pošle POST požiadavkou. Mail driver log mimo vývoja nepoužívajte.
'guards' => [
'users' => [
'model' => App\Models\User::class,
'notifications' => [
'delivery' => 'queue', // sync|after_response|queue
'queue' => 'mail',
'classes' => [
'magic_link' => App\Notifications\MagicLink::class, // extends AuthenticationNotification
'new_device' => null, // null disables it
],
'frontend_url' => 'https://app.example.com',
'urls' => [
'magic_link' => '{frontend}/auth/magic-link?guard={guard}#token={token}',
],
],
],
],Texty a jazyk
Texty sú v authentication::notifications.* a balík ich dodáva v angličtine a slovenčine (en, sk); ostatné jazyky sa vrátia k app.fallback_locale, kým ich nedoplníte do lang/vendor/authentication/<locale>/. Na úpravu či doplnenie textov publikujte preklady. Účty dostávajú e-maily vo svojom jazyku cez preferredLocale():
php artisan vendor:publish --tag=authentication-translationsRiadok o platnosti sa vykresľuje cez trans_choice() podľa zostávajúcich minút, takže má tvary množného čísla (publikovaná úprava bez | funguje naďalej), a :reason pri opätovnom použití refresh tokenu sa vykreslí z notifications.refresh_token_reuse.reasons.* v jazyku e-mailu.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.