HomePhabricator

Prevent duplicate account links from being created by swapping logins and…

Authored by epriestley.

Description

Prevent duplicate account links from being created by swapping logins and then refreshing the link

Summary:
Fixes T6707. Users can currently do this:

  • Log in to a service (like Facebook or Google) with account "A".
  • Link their Phabricator account to that account.
  • Log out of Facebook, log back in with account "B".
  • Refresh the account link from SettingsExternal Accounts.

When they do this, we write a second account link (between their Phabricator account and account "B"). However, the rest of the codebase assumes accounts are singly-linked, so this breaks down elsewhere.

For now, decline to link the second account. We'll permit this some day, but need to do more work to allow it, and the need is very rare.

Test Plan:

  • Followed the steps above, hit the new error.
  • Logged back in to the proper account and did a link refresh (which worked).

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T6707

Differential Revision: https://secure.phabricator.com/D14319