1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-29 18:22:41 +01:00

Remove weird integration between Legalpad and the ExternalAccount table

Summary:
Depends on D20107. Ref T6703. Legalpad currently inserts "email" records into the external account table, but they're never used for anything and nothing else references them.

They also aren't necessary for anything important to work, and the only effect they have is making the UI say "External Account" instead of "None" under the "Account" column. In particular, the signatures still record the actual email address.

Stop doing this, remove all the references, and destroy all the rows.

(Long ago, Maniphest may also have done this, but no longer does. Nuance/Gatekeeper use a more modern and more suitable "ExternalObject" thing that I initially started adapting here before realizing that Legalpad doesn't actually care about this data.)

Test Plan: Signed documents with an email address, saw signature reflected properly in UI. Grepped for other callsites.

Reviewers: amckinley

Reviewed By: amckinley

Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam

Maniphest Tasks: T6703

Differential Revision: https://secure.phabricator.com/D20108
This commit is contained in:
epriestley 2019-02-06 10:28:56 -08:00
parent 9f5e6bee90
commit f0364eef8a
5 changed files with 5 additions and 42 deletions

View file

@ -0,0 +1,2 @@
UPDATE {$NAMESPACE}_legalpad.legalpad_documentsignature
SET signerPHID = NULL WHERE signerPHID LIKE 'PHID-XUSR-%';

View file

@ -0,0 +1,2 @@
DELETE FROM {$NAMESPACE}_user.user_externalaccount
WHERE accountType = 'email';

View file

@ -168,35 +168,4 @@ final class PhabricatorExternalAccountQuery
return 'PhabricatorPeopleApplication'; return 'PhabricatorPeopleApplication';
} }
/**
* Attempts to find an external account and if none exists creates a new
* external account with a shiny new ID and PHID.
*
* NOTE: This function assumes the first item in various query parameters is
* the correct value to use in creating a new external account.
*/
public function loadOneOrCreate() {
$account = $this->executeOne();
if (!$account) {
$account = new PhabricatorExternalAccount();
if ($this->accountIDs) {
$account->setAccountID(reset($this->accountIDs));
}
if ($this->accountTypes) {
$account->setAccountType(reset($this->accountTypes));
}
if ($this->accountDomains) {
$account->setAccountDomain(reset($this->accountDomains));
}
if ($this->accountSecrets) {
$account->setAccountSecret(reset($this->accountSecrets));
}
if ($this->userPHIDs) {
$account->setUserPHID(reset($this->userPHIDs));
}
$account->save();
}
return $account;
}
} }

View file

@ -364,16 +364,6 @@ final class LegalpadDocumentSignController extends LegalpadController {
if ($email_obj) { if ($email_obj) {
return $this->signInResponse(); return $this->signInResponse();
} }
$external_account = id(new PhabricatorExternalAccountQuery())
->setViewer($viewer)
->withAccountTypes(array('email'))
->withAccountDomains(array($email->getDomainName()))
->withAccountIDs(array($email->getAddress()))
->loadOneOrCreate();
if ($external_account->getUserPHID()) {
return $this->signInResponse();
}
$signer_phid = $external_account->getPHID();
} }
} }
break; break;

View file

@ -226,7 +226,7 @@ final class LegalpadDocumentSignatureSearchEngine
$handles[$document->getPHID()]->renderLink(), $handles[$document->getPHID()]->renderLink(),
$signer_phid $signer_phid
? $handles[$signer_phid]->renderLink() ? $handles[$signer_phid]->renderLink()
: null, : phutil_tag('em', array(), pht('None')),
$name, $name,
phutil_tag( phutil_tag(
'a', 'a',