collectForAccount() inconsistently removes refresh tokens when user is consumer default user

Created on 20 June 2025, 3 months ago

Problem: collectForAccount() explicitly excludes refresh tokens with:
$query->condition('bundle', 'refresh_token', '!=');

However, it then calls collectForClient() which IGNORES this exclude and collects ALL tokens, including refresh tokens.

This causes inconsistent behavior:
- If user is NOT consumer default user → refresh tokens preserved ✅
- If user IS consumer default user → refresh tokens removed ❌

This breaks OAuth refresh token flow for mobile applications.

Steps to reproduce:
1. Create consumer with user_id = 123
2. Generate OAuth tokens for user 123
3. Update user entity (triggers collectForAccount())
4. Refresh tokens are removed despite explicit exclude

Expected: collectForAccount() should never remove refresh tokens
Actual: Refresh tokens removed if user is consumer default user

🐛 Bug report
Status

Needs review

Version

6.0

Component

Code

Created by

🇵🇱Poland dunjincan

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

Production build 0.71.5 2024