---
title: "DI a akcie — Auth for Laravel | Roundly"
description: "Bez fasády: injektujte AuthenticationManager alebo zavolajte jednoúčelovú akciu s názvom guardu na prvom mieste — celá mapa metód fasády na akcie."
url: https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel/bez-fasady
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)

# DI a akcie

Fasáda je odporúčaná voľba, nie jediná cesta. Rovnaký kód spúšťajú tri vstupy: fasáda Authentication (najkratší zápis), manažér RoundlyConsulting\\Auth\\AuthenticationManager — koreň fasády, singleton v kontajneri — injektovaný cez konštruktor (rovnaké API, explicitná závislosť, žiadne statické volania) a akcie v RoundlyConsulting\\Auth\\Actions\\\* (jednoúčelové triedy s execute(), ktoré skladáte do vlastných akcií, jobov a príkazov).

## Injektovanie manažéra

```php
use RoundlyConsulting\Auth\AuthenticationManager;
use RoundlyConsulting\Auth\Enums\InvalidationReason;

final class ResetSupportPassword
{
    public function __construct(private AuthenticationManager $authentication) {}

    public function __invoke(User $user, string $password): void
    {
        $this->authentication->guard('users')->passwords()->set($user, $password, InvalidationReason::Security);
    }
}
```

## Volanie akcie

Akcie určené pre hostiteľa prijímajú ako prvý argument názov guardu a účet, pozvánku či passkey iného guardu odmietnu skôr, než čokoľvek zapíšu:

```php
use RoundlyConsulting\Auth\Actions\Account\LockAccount;
use RoundlyConsulting\Auth\Actions\Invitations\ResendInvitation;
use RoundlyConsulting\Auth\Actions\Passwords\SetPassword;
use RoundlyConsulting\Auth\Enums\InvalidationReason;

// The raw actions — the same code path; the guard name comes first.
app(SetPassword::class)->execute('users', $user, $temporaryPassword, InvalidationReason::Security, actor: $admin);
app(LockAccount::class)->execute('users', $user, 3600);
app(ResendInvitation::class)->execute('users', $invitation);   // another guard's invitation → InvitationNotFound
```

## Metóda fasády → akcia

| Metóda fasády | Akcia |
| --- | --- |
| `attempt()` | `Login\AttemptPasswordLogin` |
| `requestMagicLink() / consumeMagicLink()` | `Login\RequestMagicLink / Login\ConsumeMagicLink` |
| `requestEmailOtp() / verifyEmailOtp()` | `Login\RequestEmailOtp / Login\VerifyEmailOtp` |
| `passkeyLoginOptions() / loginWithPasskey()` | `Login\BeginPasskeyLogin / Login\CompletePasskeyLogin` |
| `register()` | `Registration\RegisterAccount` |
| `issueTokens()` | `Tokens\IssueAccountTokens` |
| `refresh()` | `Tokens\RefreshTokenPair` |
| `sessions()` | `Sessions\ListSessions` |
| `logout() / logoutSession()` | `Sessions\LogoutCurrentSession / Sessions\LogoutSession` |
| `logoutOthers() / logoutEverywhere()` | `Sessions\LogoutOtherSessions / Sessions\LogoutEverywhere` |
| `invalidate()` | `Sessions\InvalidateAccountTokens` |
| `disable() / enable()` | `Account\DisableAccount / Account\EnableAccount` |
| `lock() / unlock()` | `Account\LockAccount / Account\UnlockAccount` |
| `updateLocale()` | `Account\UpdateLocale` |
| `activity()` | `Activity\ListLoginActivity` |
| `prune()` | `Activity\PruneAuthenticationData` |
| `twoFactor()->status() / start()` | `TwoFactor\GetTwoFactorStatus / TwoFactor\StartTwoFactorEnrolment` |
| `twoFactor()->confirm() / disable()` | `TwoFactor\ConfirmTwoFactorEnrolment / TwoFactor\DisableTwoFactor` |
| `twoFactor()->regenerateRecoveryCodes()` | `TwoFactor\RegenerateRecoveryCodes` |
| `passkeys()->all() / registrationOptions()` | `Passkeys\ListPasskeys / Passkeys\BeginPasskeyRegistration` |
| `passkeys()->register() / rename() / remove()` | `Passkeys\RegisterPasskey / Passkeys\RenamePasskey / Passkeys\RemovePasskey` |
| `passwords()->set() / change()` | `Passwords\SetPassword / Passwords\ChangePassword` |
| `passwords()->requestReset() / reset()` | `Passwords\RequestPasswordReset / Passwords\ResetPassword` |
| `passwords()->validate()` | `Passwords\ValidatePasswordPolicy` |
| `email()->sendVerification() / requestVerification() / resendVerification()` | `Email\SendEmailVerification / Email\RequestEmailVerification / Email\ResendEmailVerification` |
| `email()->verify()` | `Email\VerifyEmail` |
| `email()->requestChange() / confirmChange()` | `Email\RequestEmailChange / Email\ConfirmEmailChange` |
| `invitations()->create() / accept()` | `Invitations\CreateInvitation / Invitations\AcceptInvitation` |
| `invitations()->paginate() / preview()` | `Invitations\ListInvitations / Invitations\PreviewInvitation` |
| `invitations()->resend() / revoke()` | `Invitations\ResendInvitation / Invitations\RevokeInvitation` |
| `invitations()->link()` | `Invitations\SendInvitation (notify: false)` |
| `reauthentication()->sendCode() / passkeyOptions()` | `Account\SendReauthenticationCode / Account\BeginPasskeyReauthentication` |
| `reauthentication()->confirm() / ensureRecent()` | `Account\Reauthenticate / Account\EnsureRecentlyAuthenticated` |
| `challenges()->complete()` | `Challenges\CompleteTwoFactorStep, ConfirmTwoFactorEnrolmentStep, CompletePasskeyStep or CompletePasskeyEnrolmentStep (by method)` |
| `challenges()->passkeyOptions() / passkeyEnrolmentOptions()` | `Challenges\BeginPasskeyStep / Challenges\BeginPasskeyEnrolmentStep` |
| `challenges()->startTwoFactorEnrolment()` | `Challenges\StartTwoFactorEnrolmentStep` |

- Fasáda, manažér aj controllery balíka si akcie berú z kontajnera, takže všetky tri spúšťajú rovnaký kód.
- Akcie označené @internal sú stavebné bloky týchto tokov, nie API: prihlasovací reťazec (CompleteFirstFactor, CompleteLogin, EnsureAccountCanLogin, ResolveRequiredSteps, StartLoginChallenge, AssessLoginRisk, DetectNewDevice, RecordLoginActivity), engine výziev (AdvanceChallenge, FinalizeChallenge, FindActiveChallenge, InvalidateChallenge, RecordChallengeFailure), štyri akcie OneTimeTokens, VerifyPassword, CreateAccount (nahradíte ho cez registration.creator), EnforceSessionLimit, BuildAccessTokenRequest a IssueTokenPair (tokeny vydávajte cez issueTokens(), ktoré spustí aj TokensIssued).
- Akcie prijímajú tie isté DTO ako fasáda, z RoundlyConsulting\\Auth\\DataTransferObjects — PasswordCredentials, SessionContext, CurrentToken, RegistrationData, InvitationData, AcceptInvitationData, ChallengeFactorData, ReauthenticationData, ChangePasswordData, PasswordResetData, EmailChangeData a LocaleData.

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