Skip to content

Fix Ultra subscribers getting 402 when installing official plugins#326

Merged
simonhamp merged 1 commit into
mainfrom
fix-ultra-plugin-install-402
Mar 31, 2026
Merged

Fix Ultra subscribers getting 402 when installing official plugins#326
simonhamp merged 1 commit into
mainfrom
fix-ultra-plugin-install-402

Conversation

@simonhamp

Copy link
Copy Markdown
Member

Summary

  • Ultra subscribers who hadn't created a team yet were getting 402 errors when trying to install official plugins (e.g. nativephp/mobile-secure-storage)
  • The plugin access checks (hasPluginAccess() and getAccessiblePlugins()) only checked isUltraTeamMember(), which requires an existing team — they didn't check hasUltraAccess() (the subscription itself)
  • Added hasUltraAccess() as an alternative condition for official plugin access in both the model method and the Satis API controller

Test plan

  • Ultra subscriber without a team can access official plugins
  • Ultra subscriber without a team cannot access third-party plugins (still requires purchase)
  • Comped Ultra subscriber without a team can access official plugins
  • Legacy comped Max without a team is correctly denied
  • Satis API lists official plugins for Ultra subscriber without a team
  • Satis checkAccess endpoint returns true for Ultra subscriber without a team
  • All 31 existing + new tests pass

🤖 Generated with Claude Code

Plugin access checks only looked at team membership (isUltraTeamMember),
which requires creating a team first. Ultra subscribers who hadn't created
a team yet were denied access to official plugins. Now also checks
hasUltraAccess() (the subscription itself) in both hasPluginAccess() and
the Satis API listing endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@simonhamp simonhamp marked this pull request as ready for review March 31, 2026 19:25
@simonhamp simonhamp merged commit 9ddf998 into main Mar 31, 2026
2 checks passed
@simonhamp simonhamp deleted the fix-ultra-plugin-install-402 branch March 31, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant