NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Auth for Laravel

Inštalácia

Pridajte balík, vygenerujte pár RSA kľúčov pre jwt-for-laravel, spustite inštalátor a migrácie. Service provider sa zaregistruje automaticky:

composer require roundly-consulting/auth-for-laravel
php artisan jwt:generate-keys
php artisan authentication:install
php artisan migrate

authentication:install publikuje konfiguráciu a migrácie balíka spolu s migráciami refresh-tokens-for-laravel, two-factor-for-laravel a passkeys-for-laravel a potom vypíše zapojenie uvedené nižšie. Vaše konfiguračné súbory nikdy neupravuje.

Publish tagy

TagPublikuje
authentication-configconfig/authentication.php
authentication-migrationsŠtyri tabuľky auth_* a stub, ktorý pridá stĺpce účtu a passkey_user_handle do tabuľky predvoleného guardu.
authentication-translationslang/vendor/authentication — chybové hlášky, validácia a texty notifikácií.

Migrácie sa len publikujú — balík ich nikdy nenačítava sám, preto ich pred spustením migrate publikujte (alebo spustite inštalátor).

Zapojenie guardu

Každý guard potrebuje v config/auth.php jwt guard s vlastnou audience a user provider authentication:

// config/auth.php
'guards' => [
    'users'   => ['driver' => 'jwt', 'provider' => 'users',   'audience' => env('JWT_USERS_AUDIENCE', 'app-users')],
    'clients' => ['driver' => 'jwt', 'provider' => 'clients', 'audience' => env('JWT_CLIENTS_AUDIENCE', 'app-clients')],
],
'providers' => [
    'users'   => ['driver' => 'authentication', 'guard' => 'users'],
    'clients' => ['driver' => 'authentication', 'guard' => 'clients'],
],

V config/jwt.php nastavte pre každý jwt guard resolver verzie tokenu — bez neho invalidácia nič nezruší:

// config/jwt.php
'guard' => [
    'token_version' => \RoundlyConsulting\Auth\Support\TokenVersionResolver::class,
    // …
],

Príprava modelu

Model guardu implementuje kontrakty funkcií, ktoré guard používa:

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use RoundlyConsulting\Auth\Concerns\HasAuthentication;
use RoundlyConsulting\Auth\Contracts\Account;
use RoundlyConsulting\Passkeys\Concerns\InteractsWithPasskeys;
use RoundlyConsulting\Passkeys\Contracts\HasPasskeys;
use RoundlyConsulting\RefreshTokens\Traits\HasRefreshTokens;
use RoundlyConsulting\TwoFactor\Concerns\HasTwoFactorAuthentication;
use RoundlyConsulting\TwoFactor\Contracts\TwoFactorAuthenticatable;

class User extends Authenticatable implements Account, HasPasskeys, TwoFactorAuthenticatable
{
    use HasAuthentication, HasRefreshTokens, HasTwoFactorAuthentication, InteractsWithPasskeys, Notifiable;

    protected function casts(): array
    {
        return [...$this->authenticationCasts(), ...$this->twoFactorCasts(), 'email_verified_at' => 'datetime'];
    }
}

Publikovaný stub pridá do tabuľky predvoleného guardu autentifikačné stĺpce a passkey user handle (passkey_user_handle, vynechá ho, ak ho tabuľka už má); stĺpce TOTP pridá vlastný stub balíka two-factor (two-factor-migrations), takže čerstvá inštalácia prejde cez authentication:check. Tabuľka každého ďalšieho guardu volá $table->authenticationColumns() (a $table->twoFactorColumns() či $table->passkeyUserHandle(), ak sú tieto funkcie zapnuté) — php artisan authentication:guard clients vám vygeneruje model, migráciu aj factory.

Diagnostika

php artisan authentication:check

Diagnostika overí všetky pravidlá konfigurácie, zapojenie providera, potrebné stĺpce, JWT kľúče, revoker prístupových tokenov, mail aj routy a pri akejkoľvek chybe skončí s kódom 1.

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

Odoslaní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.