json( $request->user()->tokens() ->where('revoked', false) ->whereHas('client', fn ($q) => $q->whereJsonContains('grant_types', 'personal_access')) ->orderByDesc('created_at') ->get(['id', 'name', 'scopes', 'created_at', 'expires_at']) ); } public function store(Request $request) { $data = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'scopes' => ['array'], 'scopes.*' => [Rule::in(Passport::scopeIds())], ]); $result = $request->user()->createToken($data['name'], $data['scopes'] ?? []); return response()->json([ 'access_token' => $result->accessToken, 'token' => $result->token, ], 201); } public function destroy(Request $request, string $tokenId) { /** @var Token|null $token */ $token = $request->user()->tokens()->where('id', $tokenId)->first(); abort_unless($token, 404); $token->revoke(); return response()->noContent(); } }