---
title: "Registrácia a pozvánky — Auth for Laravel | Roundly"
description: "Otvorená, len na pozvánku alebo zatvorená registrácia s vlastnými poliami a creatorom, plus pozvánky s payloadom, náhľadom a limitmi."
url: https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel/registracia-a-pozvanky
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)

# Registrácia a pozvánky

Registrácia má tri režimy — open, invite\_only a closed (predvolený); closed odmietne aj prijatie pozvánky, preto na registráciu len cez pozvánky použite invite\_only. Pozvánky sú vypnuté, kým ich nezapnete — dovtedy každé volanie invitations() vyhodí LoginMethodDisabled (404 method\_disabled):

```php
'registration' => [
    'mode' => env('AUTHENTICATION_REGISTRATION', 'closed'),  // open|invite_only|closed
    'require_password' => true,          // when login.password is on
    'login_after' => true,
    'rules' => null,                     // class-string<ProvidesRegistrationRules>|null
    'creator' => CreateAccount::class,   // class-string<CreatesAccounts>
],

'invitations' => [
    'enabled' => false,
    'ttl' => 604_800,                    // 7 days
    'lock_email' => true,
    'replace_pending' => true,
    'allow_existing_email' => false,
    'resend_cooldown' => 60,
    'max_sends' => 5,
    'preview_payload_keys' => [],        // payload keys exposed by the preview endpoint
    'ability' => 'authentication.invitations.manage',  // Gate ability for management routes
],
```

## Registrácia

```php
use RoundlyConsulting\Auth\DataTransferObjects\RegistrationData;
use RoundlyConsulting\Auth\Enums\RegistrationStatus;
use RoundlyConsulting\Auth\Facades\Authentication;
use RoundlyConsulting\Auth\Http\Responses\LoginResponse;

$guard  = Authentication::guard('users');
$result = $guard->register(new RegistrationData(
    email: $request->input('email'),
    password: $request->input('password'),
    context: $guard->contextFrom($request),
    attributes: $request->input('attributes', []),
));

if ($result->status === RegistrationStatus::Authenticated) {
    return LoginResponse::make($result->login, $request);   // tokens, or a challenge
}

// VerificationRequired or Accepted — answer 202, identical for new and taken addresses
```

- closed vráti registration\_closed; invite\_only vráti invitation\_required.
- Obmedzené podľa IP. Validuje sa e-mail, heslo (podľa pravidiel) aj vaše ďalšie atribúty — ku creatoru sa dostanú len kľúče, ktoré vaše pravidlá uvádzajú.
- Už použitá adresa: v režimoch odolných voči enumerácii (overenie povinné pre prihlásenie alebo vypnuté login\_after) dostane táto adresa e-mail o existujúcom účte v jazyku jej držiteľa (najviac raz za 10 minút, s pauzou spoločnou s prijatím pozvánky a zmenou e-mailu) a volajúci presne ten istý status ako pri novom účte; inak dostane „e-mail je obsadený“.
- Spustí sa AccountRegistered; ak overenie nie je off, odíde overovací e-mail.
- Registrácia nikdy nepreskočí povinné nastavenie dvojfaktora, ani pri vypnutom two\_factor.after\_email\_login.
- Výsledok je authenticated (prípadne výzva), verification\_required (202) alebo accepted (202).

## Vlastné polia a creator

registration.rules pridá do registrácie vaše vlastné polia:

```php
use RoundlyConsulting\Auth\Contracts\ProvidesRegistrationRules;
use RoundlyConsulting\Auth\Guards\GuardConfig;

// config: 'guards' => ['users' => ['registration' => ['rules' => ProfileRules::class]]]

final class ProfileRules implements ProvidesRegistrationRules
{
    public function rules(GuardConfig $guard): array
    {
        return ['name' => ['required', 'string', 'max:100']];
    }
}
```

registration.creator nahradí vytváranie účtu: implementujte CreatesAccounts::create(GuardConfig $guard, NewAccountData $data): Account. NewAccountData nesie e-mail, heslo, jazyk, časové pásmo, príznak emailVerified a povolené atribúty. Ten istý creator sa použije aj pri prijatí pozvánky.

## Pozvánky

```php
use RoundlyConsulting\Auth\DataTransferObjects\AcceptInvitationData;
use RoundlyConsulting\Auth\DataTransferObjects\InvitationData;
use RoundlyConsulting\Auth\Facades\Authentication;

$guard       = Authentication::guard('users');
$invitations = $guard->invitations();

// Invite — payload is your own role/meta JSON, surfaced on acceptance
$link = $invitations->create(new InvitationData(
    email: 'new.hire@example.com',
    payload: ['role' => 'editor'],
    invitedBy: $admin,
    locale: 'sk',
));
$link->invitation;   // the Invitation model
$link->url;          // the plaintext link, returned once — mailed to the invitee unless send: false

// Accept — creates a verified account and logs it in, like register()
$result = $invitations->accept(new AcceptInvitationData(
    token: $request->input('token'),
    password: $request->input('password'),
    context: $guard->contextFrom($request),
));   // RegistrationResult — ->login holds the tokens or a challenge
```

- Vytvorenie normalizuje adresu, odmietne adresu existujúceho účtu (ak nie je zapnuté allow\_existing\_email) a pri replace\_pending zruší čakajúcu pozvánku pre adresu.
- Každé odoslanie vydá nový token, takže predošlý odkaz zanikne; resend() vráti nový InvitationLink. Počas resend\_cooldown odpovie too\_many\_attempts so zostávajúcimi sekundami; po dosiahnutí max\_sends vyhodí InvitationSendLimitReached (422 invitation\_send\_limit) — definitívne, lebo počítadlo sa nikdy nevynuluje, takže pozvánku zrušte a vytvorte novú. Súbežné opätovné odoslania pošlú e-mail len raz.
- send: false pozvánku vytvorí a vráti jej odkaz bez odoslania e-mailu — $link->url doručíte sami. link() vytvorí nový odkaz na skopírovanie bez e-mailu; predošlý odkaz, aj ten odoslaný, zanikne. Ani jedno sa nepočíta ako odoslanie: send\_count, last\_sent\_at, pauza pred ďalším odoslaním, max\_sends aj InvitationSent sledujú len skutočne odoslané e-maily.
- Náhľad vráti čakajúcu pozvánku — email, guard, expires\_at a len kľúče z preview\_payload\_keys.
- Prijatie pozvánku atomicky uplatní, vytvorí overený účet (pri vypnutom lock\_email sa iná adresa uloží neoverená a dostane overovací e-mail), spustí AccountRegistered a InvitationAccepted a potom prihlási. Ak je adresa už obsadená, uplatnenie sa vráti späť s jednotným invalid\_invitation a adresa dostane e-mail o existujúcom účte (v jazyku držiteľa, inak v jazyku pozvánky) s rovnakou pauzou pre adresu ako pri registrácii.
- Stav sa odvodzuje: pending, accepted, revoked alebo expired.

## Správa pozvánok

```php
use RoundlyConsulting\Auth\DataTransferObjects\InvitationData;
use RoundlyConsulting\Auth\Enums\InvitationStatus;
use RoundlyConsulting\Auth\Events\InvitationAccepted;
use RoundlyConsulting\Auth\Facades\Authentication;

$invitations = Authentication::guard('users')->invitations();

$invitations->paginate(InvitationStatus::Pending, 20);   // newest first
$invitations->find($id);                                 // ?Invitation of this guard
$invitations->resend($invitation);                       // InvitationLink — mails a fresh link; the previous one dies
$invitations->link($invitation);                         // a fresh copyable link, nothing mailed or counted
$invitations->revoke($invitation);                       // idempotent

// Create without mailing — deliver $link->url yourself (no send is counted)
$link = $invitations->create(new InvitationData('ada@example.com', send: false));

Invitation::query()->where('guard', 'users')->withStatus(InvitationStatus::Pending)->get();

Event::listen(fn (InvitationAccepted $e) => $e->account->assignRole($e->invitation->payloadValue('role')));
```

Pozvánka iného guardu — ako model aj ako id — je InvitationNotFound a nový odkaz dostane len čakajúca pozvánka. Cez HTTP POST invitations odpovie 201 s data a odkazom v url (zobrazí sa raz, či už bol odoslaný, alebo nie) a resend odpovie {"status": "sent", "url": …}. Routy správy (skupina invitations.manage) vyžadujú routes.invitations\_management a Gate ability z invitations.ability. Roly priraďte v listeneri InvitationAccepted podľa $invitation->payload.

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