mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-28 16:30:59 +01:00
Expand the "PhabricatorExternalAccount" table for new registration
Summary: Ref T1536. This is the schema code for `PhabricatorExternalAccount` which was previously in D4647. I'm splitting it out so I can put it earlier in the sequence and because it's simple and standalone. Expands `PhabricatorExternalAccount` to have everything we need for the rest of registration. Test Plan: Implemented the remainder of new registration on top of this. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T1536 Differential Revision: https://secure.phabricator.com/D6169
This commit is contained in:
parent
efbd3ecc48
commit
8886416e30
5 changed files with 63 additions and 1 deletions
31
resources/sql/patches/20130607.xaccount.sql
Normal file
31
resources/sql/patches/20130607.xaccount.sql
Normal file
|
@ -0,0 +1,31 @@
|
|||
TRUNCATE {$NAMESPACE}_user.user_externalaccount;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
CHANGE accountDomain accountDomain varchar(64) NOT NULL COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
CHANGE displayName displayName varchar(255) COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD username VARCHAR(255) COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD realName VARCHAR(255) COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD email VARCHAR(255) COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD emailVerified BOOL NOT NULL COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD accountURI VARCHAR(255) COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD profileImagePHID VARCHAR(64) COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD properties LONGTEXT NOT NULL COLLATE utf8_bin;
|
||||
|
||||
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||
ADD KEY `key_userAccounts` (userPHID);
|
|
@ -84,14 +84,17 @@ abstract class PhabricatorMailReceiver {
|
|||
$allow_email_users = PhabricatorEnv::getEnvConfig($email_key);
|
||||
if ($allow_email_users) {
|
||||
$xuser = id(new PhabricatorExternalAccount())->loadOneWhere(
|
||||
'accountType = %s AND accountDomain IS NULL and accountID = %s',
|
||||
'accountType = %s AND accountDomain = %s and accountID = %s',
|
||||
'email',
|
||||
'self',
|
||||
$from);
|
||||
if (!$xuser) {
|
||||
$xuser = id(new PhabricatorExternalAccount())
|
||||
->setAccountID($from)
|
||||
->setAccountType('email')
|
||||
->setAccountDomain('self')
|
||||
->setDisplayName($from)
|
||||
->setEmail($from)
|
||||
->save();
|
||||
}
|
||||
return $xuser->getPhabricatorUser();
|
||||
|
|
|
@ -317,6 +317,13 @@ final class PhabricatorUserEditor extends PhabricatorEditor {
|
|||
$oauth->delete();
|
||||
}
|
||||
|
||||
$externals = id(new PhabricatorExternalAccount())->loadAllWhere(
|
||||
'userPHID = %s',
|
||||
$user->getPHID());
|
||||
foreach ($externals as $external) {
|
||||
$external->delete();
|
||||
}
|
||||
|
||||
$prefs = id(new PhabricatorUserPreferences())->loadAllWhere(
|
||||
'userPHID = %s',
|
||||
$user->getPHID());
|
||||
|
|
|
@ -8,6 +8,13 @@ final class PhabricatorExternalAccount extends PhabricatorUserDAO {
|
|||
protected $accountSecret;
|
||||
protected $accountID;
|
||||
protected $displayName;
|
||||
protected $username;
|
||||
protected $realName;
|
||||
protected $email;
|
||||
protected $emailVerified = 0;
|
||||
protected $accountURI;
|
||||
protected $profileImagePHID;
|
||||
protected $properties = array();
|
||||
|
||||
public function generatePHID() {
|
||||
return PhabricatorPHID::generateNewPHID(
|
||||
|
@ -17,6 +24,9 @@ final class PhabricatorExternalAccount extends PhabricatorUserDAO {
|
|||
public function getConfiguration() {
|
||||
return array(
|
||||
self::CONFIG_AUX_PHID => true,
|
||||
self::CONFIG_SERIALIZATION => array(
|
||||
'properties' => self::SERIALIZATION_JSON,
|
||||
),
|
||||
) + parent::getConfiguration();
|
||||
}
|
||||
|
||||
|
@ -27,4 +37,11 @@ final class PhabricatorExternalAccount extends PhabricatorUserDAO {
|
|||
return $tmp_usr;
|
||||
}
|
||||
|
||||
public function save() {
|
||||
if (!$this->getAccountSecret()) {
|
||||
$this->setAccountSecret(Filesystem::readRandomCharacters(32));
|
||||
}
|
||||
return parent::save();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1354,6 +1354,10 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
|
|||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20130606.userxactions.sql'),
|
||||
),
|
||||
'20130607.xaccount.sql' => array(
|
||||
'type' => 'sql',
|
||||
'name' => $this->getPatchPath('20130607.xaccount.sql'),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue