Dans notre application, lorsque l'utilisateur se déconnecte, nous invalidons le jeton d'accès pour cet appareil particulier de cette façon.
$user = $request->user();
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $user->tokens->find($id);
$token->revoke();
Mais lorsqu'un utilisateur désactive son compte, nous voudrions invalider tous les jetons d'accès de tous les appareils auxquels l'utilisateur est connecté. J'ai parcouru le document mais je n'ai rien trouvé d'utile. Merci
Jetez un œil au trait HasApiTokens
fourni par le passeport. Le documentation recommande d'ajouter ce trait à votre modèle d'utilisateur. L'une des méthodes qu'il propose est tokens()
, qui définit une relation hasMany
entre Laravel\Passport\Token
et les modèles utilisant le trait. Vous pouvez l'utiliser pour récupérer une liste de tous les jetons pour un utilisateur donné:
$userTokens = $userInstance->tokens;
Le modèle de jeton lui-même a une méthode revoke
:
foreach($userTokens as $token) {
$token->revoke();
}