DI a akcie
Tri rovnocenné vstupné body spúšťajú ten istý kód. Fasáda je najkratšia a odporúčaná voľba. RoundlyConsulting\RefreshTokens\RefreshTokensManager — koreň fasády, singleton v kontajneri — poskytuje identické API ako explicitnú závislosť v konštruktore, bez statických volaní. A za každou metódou stojí jednoúčelová akcia s metódou execute(), ktorú môžete skladať do vlastných akcií, jobov či príkazov:
use RoundlyConsulting\RefreshTokens\Actions\RotateRefreshTokenAction;
use RoundlyConsulting\RefreshTokens\RefreshTokensManager;
final class RefreshController
{
public function __construct(private RefreshTokensManager $refreshTokens) {}
public function __invoke(Request $request): JsonResponse
{
$rotation = $this->refreshTokens->rotate($request->string('refresh_token')->value());
// …
}
}
// The raw action:
$rotation = app(RotateRefreshTokenAction::class)->execute($plain, new RotationContext);To isté volanie vo všetkých troch podobách:
// Facade
RefreshTokens::sessions($user)->revokeOthers($currentJti);
// Dependency injection
public function __construct(private RefreshTokensManager $refreshTokens) {}
$this->refreshTokens->sessions($user)->revokeOthers($currentJti);
// The raw action
app(RevokeOtherSessionsAction::class)->execute($user, $currentJti, RevocationReason::LogoutAll);Metóda fasády → akcia
| Metóda fasády | Akcia |
|---|---|
issue() / for()->issue() | IssueRefreshTokenAction |
redeem() | RedeemRefreshTokenAction |
rotate() | RotateRefreshTokenAction |
revoke() | RevokeRefreshTokenAction |
prune() | PruneRefreshTokensAction |
sessions()->all() / find() | ListSessionsAction / FindSessionAction |
sessions()->revoke() | RevokeSessionByFamilyAction |
sessions()->revokeOthers() / revokeAllExcept() / revokeAll() | RevokeOtherSessionsAction / RevokeAllSessionsExceptAction / RevokeAllSessionsAction |
session()->enrich() / revoke() | EnrichSessionAction / RevokeSessionAction |
Každá metóda manažéra aj objektov relácií si akciu pri každom volaní vytvorí z kontajnera, takže platia vaše prepísané väzby aj Event::fake(). RefreshTokens::fake() nahradí manažéra v kontajneri aj za fasádou, takže sa zaznamenajú aj injektovaní manažéri a trait.
Interné stavebné bloky
RevokeTokenFamilyAction (odvolanie rodiny pri detekcii opätovného použitia) a SealPendingRotationsAction (uzavretie relácií zachytených uprostred rotácie) sú interné (@internal) a nie sú na fasáde — bežia vnútri redeem() a odvolania relácií, preto ich nevolajte priamo.
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.