---
title: "Notifikácie — Auth for Laravel | Roundly"
description: "20 lokalizovateľných e-mailových notifikácií — každú nahradíte či vypnete pre guard, doručenie po odpovedi alebo cez šifrovanú frontu."
url: https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel/notifikacie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Auth for Laravel](https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel.md)

# 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 (jazyk jej držiteľa) |
| `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 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:

```php
'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
            ],
        ],
    ],
],
```

## Keď zasiahol administrátor

Štyri typy môže cez kód hostiteľa spôsobiť niekto iný než účet: password\_changed (passwords()->set()), two\_factor\_disabled (twoFactor()->disable()), passkey\_removed (passkeys()->remove()) a account\_locked (lock()) — NotificationType::actorAware() vráti true práve pre ne. Ak administrátora odovzdáte ako actor:, platí:

- NotificationData::$actor obsahuje ActorData — morph typ a kľúč actora, nikdy model, pretože šifrovaný doručovací job notifikáciu serializuje a atribúty administrátora (hash hesla, 2FA tajomstvo) nepatria do úložiska fronty ani do failed\_jobs. ActorData::fromModel() ho vytvorí (neuložený model vyhodí InvalidArgumentException), is($model) porovná a resolve() model znova načíta — null, ak už neexistuje.
- toMail() vezme predmet, úvod a záver z notifications.<type>.by\_actor.\*; riadky s tlačidlom, kódom a platnosťou zostanú. Text hovorí o „administrátorovi“ a actora nikdy nemenuje.
- Udalosť (PasswordChanged, TwoFactorDisabled, PasskeyRemoved, AccountLocked) nesie model actora ako actor.

Samotný účet sa za actora nepovažuje, takže vlastné toky používateľa, HTTP endpointy aj automatické uzamknutie posielajú vždy základný text; bez actor: sa nič nemení a ostatné typy actora ignorujú. Nové riadky balík dodáva v angličtine a slovenčine:

| Kľúč notifications.… | sk |
| --- | --- |
| `password_changed.by_actor.subject` | Vaše heslo do aplikácie :app zmenil administrátor |
| `password_changed.by_actor.intro` | Administrátor zmenil heslo k vášmu účtu. |
| `password_changed.by_actor.outro` | Ak ste to nečakali, okamžite kontaktujte podporu. |
| `two_factor_disabled.by_actor.subject` | Dvojfaktorové overenie vypol administrátor |
| `two_factor_disabled.by_actor.intro` | Administrátor vypol vo vašom účte dvojfaktorové overenie. |
| `two_factor_disabled.by_actor.outro` | Ak ste to nečakali, okamžite kontaktujte podporu a dvojfaktorové overenie znova zapnite. |
| `passkey_removed.by_actor.subject` | Administrátor odstránil z vášho účtu prístupový kľúč |
| `passkey_removed.by_actor.intro` | Administrátor odstránil z vášho účtu prístupový kľúč. Na prihlásenie ho už nemožno použiť. |
| `passkey_removed.by_actor.outro` | Ak ste to nečakali, okamžite kontaktujte podporu. |
| `account_locked.by_actor.subject` | Váš účet v aplikácii :app zablokoval administrátor |
| `account_locked.by_actor.intro` | Administrátor dočasne zablokoval váš účet. Kým blokovanie neskončí, nemôžete sa prihlásiť. |
| `account_locked.by_actor.outro` | Ak ste to nečakali, kontaktujte podporu. |

Hostiteľ, ktorý preklady publikoval ešte pred pridaním týchto kľúčov, ich dostane tiež — Laravel publikovaný súbor zlúči s riadkami balíka; jazyk, ktorý balík nedodáva, sa pre ne vráti k app.fallback\_locale, kým ich nedoplníte. Ak ich chcete sformulovať inak, prepíšte authentication::notifications.<type>.by\_actor.\* v publikovaných prekladoch. Ak má e-mail actora pomenovať, nahraďte triedu (notifications.classes.password\_changed) a actora načítajte:

```php
use Illuminate\Notifications\Messages\MailMessage;
use RoundlyConsulting\Auth\Notifications\PasswordChangedNotification;

final class NamedPasswordChangedNotification extends PasswordChangedNotification
{
    public function toMail(object $notifiable): MailMessage
    {
        $mail = parent::toMail($notifiable);
        $admin = $this->data->actor?->resolve();   // null without an actor, or when it was deleted

        return $admin === null ? $mail : $mail->line(__('Changed by :name.', ['name' => $admin->name]));
    }
}
```

## 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.

```php
'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():

```bash
php artisan vendor:publish --tag=authentication-translations
```

Riadok 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel.md)
