Skip to content

Initiate Meetup recovery in the administrator browser - #2084

Closed
obenland wants to merge 2 commits into
productionfrom
fix/meetup-oauth-dispatch
Closed

obenland wants to merge 2 commits into
productionfrom
fix/meetup-oauth-dispatch

Conversation

@obenland

Copy link
Copy Markdown
Member

Adds authenticated browser initiation for Meetup recovery. The admin dashboard shows a “Reconnect Meetup” link that generates OAuth state in the current administrator's session. The callback dispatcher checks the administrator capability and nonce during admin_init, after WordPress loads the current user.

Companion to WordPress/wporg-mu-plugins#775. Deploy both changes together: MU-plugins recovery warnings now point to this local initiation page, and its OAuth client validates the returned nonce. This also keeps session-bound state and encoded redirect parameters out of cron and Slack recovery messages.

How to test the changes in this Pull Request:

  1. Use this branch with the companion MU-plugins branch. Open /wp-admin/?action=wcorg-meetup-authorize as a network administrator and confirm the “Reconnect Meetup” link appears. Verify it does not appear for an unauthorized user.
  2. Follow the link and complete Meetup authorization. Confirm the callback stores the token. Invalid state and unauthorized callbacks must not initiate an exchange.
  3. Generate a recovery warning from cron or CLI and verify its local link remains usable after WordCamp's Slack text sanitization.

Validation

  • Both changed PHP files pass the WordCamp PHPCS configuration.
  • Dispatcher regression tests pass under WordPress multisite: 2 tests, 10 assertions.
  • Combined recovery flow through the actual dispatcher and MU-plugins client passes with mocked HTTP: 1 test, 6 assertions.
  • The companion MU-plugins suite passes: 37 tests, 131 assertions.

Live Meetup authorization, the full WordCamp test suite, and hosted CI were not verified locally.

Copilot AI lite review requested due to automatic review settings September 15, 2026 21:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@obenland

Copy link
Copy Markdown
Member Author

Closing this companion PR because OAuth protocol changes have been removed from WordPress/wporg-mu-plugins#775. That PR now preserves the existing callback protocol and requires no WordCamp deployment. This branch is retained for separate OAuth hardening work.

@obenland obenland closed this Sep 15, 2026
@bor0
bor0 deleted the fix/meetup-oauth-dispatch branch October 7, 2026 14:35
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.

2 participants