29 lines
744 B
PHP
29 lines
744 B
PHP
<?php
|
|
|
|
namespace App\Support;
|
|
|
|
use App\Events\TokenRevoked;
|
|
use Laravel\Passport\Token;
|
|
|
|
/**
|
|
* Único punto de revocación de un token OAuth — usado por el self-service
|
|
* (AuthorizedAppController, ClientController), por el admin (UserSessions) y
|
|
* por la revocación en cascada al revocar un client. Centralizarlo acá
|
|
* garantiza que el evento TokenRevoked (que dispara los webhooks salientes)
|
|
* se dispare siempre, sin importar desde dónde se originó la revocación.
|
|
*/
|
|
class TokenRevocation
|
|
{
|
|
public static function revoke(Token $token): void
|
|
{
|
|
if ($token->revoked) {
|
|
return;
|
|
}
|
|
|
|
$token->revoke();
|
|
$token->refreshToken?->revoke();
|
|
|
|
TokenRevoked::dispatch($token);
|
|
}
|
|
}
|