HTTP API
Balík obsahuje voliteľné JSON endpointy pre každý guard. Zaregistrujete ich cez routes.enabled = true pre guard, alebo explicitne:
// routes/api.php
use RoundlyConsulting\Auth\Facades\Authentication;
Authentication::routes('users'); // defaults
Authentication::routes('clients')
->prefix('api/clients/auth')
->name('clients.auth.')
->middleware(['api'])
->authenticatedMiddleware(['authentication.active'])
->except(['registration', 'invitations.manage']);RouteRegistrar ponúka prefix(), name(), middleware(), authenticatedMiddleware(), only() a except(); routy zaregistruje pri deštrukcii. Predvolené: prefix {guard}/auth, názvy authentication.{guard}.*, middleware api. Dvojitá registrácia guardu vyhodí výnimku. Skupiny pre only() / except(): login, challenge, tokens, registration, invitations, passwords, email, account, sessions, two-factor, passkeys, invitations.manage.
Endpointy
Každá routa má authentication.guard:{guard} a Cache-Control: no-store a existuje len vtedy, ak je jej funkcia pre guard zapnutá (vypnutá funkcia vráti 404). Tokeny vždy putujú v tele požiadavky (JSON). * = vyžaduje prihlásenie (auth:{laravel_guard}); ? = nepovinné.
| Metóda | URI (pod prefixom) | Telo | Účel |
|---|---|---|---|
| POST | login | identifier, password | Prihlásenie heslom — identifier je ktorýkoľvek z identifier.columns (predvolene e-mail); pole email neexistuje. |
| POST | login/magic-link | email | Vyžiadanie magic linku. |
| POST | login/magic-link/consume | token | Prihlásenie tokenom z odkazu. |
| POST | login/otp | email | Vyžiadanie e-mailového kódu. |
| POST | login/otp/verify | email, code | Prihlásenie kódom. |
| POST | login/passkey/options | — | Options pre prihlásenie passkey bez hesla. |
| POST | login/passkey | credential | Prihlásenie passkey bez hesla. |
| POST | challenge/two-factor | challenge_token, code, method? (totp | recovery_code) | TOTP alebo záložný kód (pod totp sa prijme oboje). |
| POST | challenge/two-factor/enrol | challenge_token | Spustenie vynúteného nastavenia TOTP (secret, QR kód, záložné kódy). |
| POST | challenge/two-factor/enrol/confirm | challenge_token, code | Jeho potvrdenie. |
| POST | challenge/passkey/options | challenge_token | Options pre passkey ako druhý faktor. |
| POST | challenge/passkey | challenge_token, credential | Passkey ako druhý faktor. |
| POST | challenge/passkey/enrol/options | challenge_token | Options pre vynútenú registráciu passkey. |
| POST | challenge/passkey/enrol | challenge_token, credential, name? | Vynútená registrácia passkey. |
| POST | refresh | refresh_token | Rotácia refresh tokenu (predošlý prístupový token prestane platiť). |
| POST | register | email, password (when required), attributes? | Registrácia (attributes = vlastné polia z registration.rules). |
| POST | invitations/preview | token | Na čo pozvánka slúži. |
| POST | invitations/accept | token, password (when required), email? (only when lock_email is off), attributes? | Prijatie pozvánky. |
| POST | password/forgot | email | Vyžiadanie odkazu na obnovu hesla. |
| POST | password/reset | token, password | Obnova hesla. |
| POST | email/verify | token, email (with the code channel) | Overenie adresy — token je token z odkazu alebo kód. |
| POST | email/verification/resend | email | Opätovné odoslanie overenia (bez prihlásenia). |
| POST | email/change/confirm | token | Potvrdenie zmeny e-mailu (otvorené z e-mailu). |
| GET* | me | — | Účet. |
| PATCH* | locale | locale?, timezone? | Jazyk / časové pásmo. |
| POST* | reauthenticate | method + password | code | credential | Opätovné overenie — method je password, totp, recovery_code, email_otp alebo passkey. |
| POST* | reauthenticate/passkey/options, reauthenticate/otp | — | Options pre passkey / odoslanie kódu na opätovné overenie. |
| GET* | activity | query per_page? | Vlastná prihlasovacia aktivita. |
| POST* | logout, logout/others, logout/everywhere | — | Odhlásenia. |
| GET* / DELETE* | sessions, sessions/{session} | — | Relácie zariadení. |
| PUT* | password | current_password (when the account has one), password | Zmena hesla. |
| POST* | email/change | email | Žiadosť o zmenu e-mailu. |
| POST* | email/verification | — | Odoslanie overenia. |
| GET* POST* DELETE* | two-factor, two-factor/recovery-codes | — | Stav, spustenie nastavenia, vypnutie, nové záložné kódy. |
| POST* | two-factor/confirm | code | Potvrdenie nastavenia. |
| GET* POST* | passkeys, passkeys/options | passkeys: credential, name? | Zoznam, options na registráciu, registrácia. |
| PATCH* / DELETE* | passkeys/{passkey} | PATCH: name | Premenovanie / odstránenie. |
| GET* | invitations | query status?, per_page? | Správa pozvánok (Gate ability). |
| POST* | invitations | email, payload?, locale?, ttl? (seconds), send? (default true) | Vytvorenie — 201 s data a odkazom v url (zobrazí sa raz; pri send: false sa nič neodošle a odkaz doručíte sami). |
| POST* / DELETE* | invitations/{invitation}/resend, invitations/{invitation} | — | Opätovné odoslanie ({"status": "sent", "url": …}) / zrušenie. |
Každý endpoint, ktorý prihlasuje, prijíma aj device_name? (zobrazí sa v zozname relácií); register a invitations/accept navyše timezone? (uloží sa k novému účtu). Zariadenie sa číta z hlavičky X-Device-Id (activity.new_device.header), jazyk z X-Locale / Accept-Language. credential je JSON objektu PublicKeyCredential z prehliadača s členmi v base64url, doplnený o ceremonyId options, na ktoré odpovedá.
Odpovede
// 200 — authenticated
{ "status": "authenticated", "token_type": "Bearer", "access_token": "eyJ…", "expires_in": 900,
"expires_at": "2026-09-26T10:15:00Z", "refresh_token": "…", "refresh_expires_at": "2026-10-26T10:00:00Z",
"session_id": "0199…" }
// 200 — challenge
{ "status": "challenge", "challenge_token": "…", "expires_at": "…", "attempts_left": 5, "method": "password",
"completed": [], "remaining": [ { "step": "second_factor", "methods": ["totp", "recovery_code", "passkey"] } ] }
// 202 — enumeration-safe acknowledgement (magic link, email code, forgot, resend, email change)
{ "status": "sent" }
// error
{ "message": "…", "code": "invalid_credentials", "errors": { "identifier": ["…"] } }Odpovede na zmenu prihlasovacích údajov (PUT password, POST two-factor/confirm, DELETE two-factor, POST two-factor/recovery-codes, POST passkeys, DELETE passkeys/{passkey}) obsahujú tokens alebo null. Ak nie je null, klient musí okamžite prejsť na nový pár — jeho predošlý prístupový token so zmenou zanikol.
Chyby
| Kód | Status | Kedy |
|---|---|---|
invalid_credentials | 422 | Nesprávne prihlasovacie údaje (jednotná odpoveď). |
invalid_token / invalid_code | 422 | Odkaz alebo kód z e-mailu je neplatný (jednotná odpoveď). |
challenge_invalid / factor_failed / factor_not_allowed | 422 | Problémy s výzvou (attempts_left pri factor_failed). |
invalid_invitation | 422 | Pozvánka je neplatná (jednotná odpoveď). |
passkey_registration_failed | 422 | Passkey sa nepodarilo zaregistrovať. |
refresh_invalid | 401 | Refresh token je neplatný (jednotná odpoveď). |
account_disabled / email_not_verified / enrolment_required / reauthentication_required | 403 | Stav účtu alebo pravidlá (methods pri opätovnom overení). |
registration_closed / invitation_required / login_denied | 403 | Registrácia alebo riziko. |
account_locked | 423 | Opätovne sa overujúci účet je uzamknutý. |
too_many_attempts | 429 | Prekročený limit alebo tvrdé uzamknutie (Retry-After). |
two_factor_required / last_credential / two_factor_already_enabled / two_factor_not_enabled | 409 | Odmietnuté zmeny. |
method_disabled / not_found | 404 | Funkcia vypnutá alebo neznáme id. |
| validačná chyba poľa password | 422 | Služba kontroly uniknutých hesiel nedostupná pri fail_closed. |
misconfigured | 500 | Chyba konfigurácie (detail len pri app.debug). |
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.