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

K dispozícii sú tri rovnocenné vstupné body a výber je na vás:

  • Fasáda Passkeys — najkratší zápis a odporúčaná voľba.
  • Služba injektovaná cez konštruktor — rovnaké API ako explicitná závislosť, bez statických volaní. Uveďte typ kontraktu RoundlyConsulting\Passkeys\Contracts\PasskeyService: je koreňom fasády a je naviazaný na RoundlyConsulting\Passkeys\PasskeyManager. Manažér je v kontajneri naviazaný len cez kontrakt, nie ako samostatný singleton — injektujte kontrakt, nie triedu.
  • Akcie — jednoúčelové triedy s metódou execute(), ktoré zapojíte do vlastných akcií, jobov a príkazov.

Injektovanie služby

Passkeys::fake() vymení väzbu PasskeyService, takže náhradu vidí aj kód so závislosťou v konštruktore:

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use RoundlyConsulting\Passkeys\Contracts\PasskeyService;

final readonly class RevokePasskeyController
{
    public function __construct(private PasskeyService $passkeys) {}

    public function __invoke(Request $request, int $passkey): Response
    {
        $this->passkeys->for($request->user())->revoke($passkey);

        return response()->noContent();
    }
}

Spustenie akcie

Každé volanie fasády zodpovedá jednej akcii, ktorá sa získa z kontajnera:

Volanie fasádyAkcia
for($user)->registrationOptions($o)GenerateRegistrationOptionsAction::execute($user, $o)
for($user)->register($r, $name)VerifyRegistrationAction::execute($user, $r, $name)
for($user)->authenticationOptions($o) / authenticationOptions($o)GenerateAuthenticationOptionsAction::execute(?$user, $o)
for($user)->authenticate($r) / authenticate($r, $expect)VerifyAuthenticationAction::execute($r, ?$expect)
for($user)->rename($p, $name)RenamePasskeyAction::execute($passkey, $name)
for($user)->revoke($p)RevokePasskeyAction::execute($passkey)
use RoundlyConsulting\Passkeys\Actions\GenerateRegistrationOptionsAction;
use RoundlyConsulting\Passkeys\Actions\RevokePasskeyAction;
use RoundlyConsulting\Passkeys\Actions\VerifyRegistrationAction;
use RoundlyConsulting\Passkeys\Models\Passkey;

// The same two registration calls, one action each:
$options = app(GenerateRegistrationOptionsAction::class)->execute($user, $overrides);
$passkey = app(VerifyRegistrationAction::class)->execute($user, $response, 'MacBook Touch ID');

// Trusted code that already scoped its query — the action itself checks no ownership:
Passkey::query()
    ->ownedBy($user)
    ->where('last_used_at', '<', now()->subYear())
    ->each(fn (Passkey $passkey) => app(RevokePasskeyAction::class)->execute($passkey));

RenamePasskeyAction a RevokePasskeyAction prijímajú už načítaný Passkey a vlastníctvo nekontrolujú — to robí handle účtu. Priamo ich volajte len z dôveryhodného kódu, napríklad z administrátorského nástroja alebo jobu, ktorý už svoj dopyt obmedzil.

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.