store verification status in accounts table and update lookup server
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
This commit is contained in:
parent
c9ccdca1ec
commit
6f41a3edc0
|
@ -53,6 +53,10 @@ class AccountManager {
|
||||||
const PROPERTY_ADDRESS = 'address';
|
const PROPERTY_ADDRESS = 'address';
|
||||||
const PROPERTY_TWITTER = 'twitter';
|
const PROPERTY_TWITTER = 'twitter';
|
||||||
|
|
||||||
|
const NOT_VERIFIED = '0';
|
||||||
|
const VERIFICATION_IN_PROGRESS = '1';
|
||||||
|
const VERIFIED = '2';
|
||||||
|
|
||||||
/** @var IDBConnection database connection */
|
/** @var IDBConnection database connection */
|
||||||
private $connection;
|
private $connection;
|
||||||
|
|
||||||
|
@ -85,6 +89,7 @@ class AccountManager {
|
||||||
if (empty($userData)) {
|
if (empty($userData)) {
|
||||||
$this->insertNewUser($user, $data);
|
$this->insertNewUser($user, $data);
|
||||||
} elseif ($userData !== $data) {
|
} elseif ($userData !== $data) {
|
||||||
|
$data = $this->updateVerifyStatus($userData, $data);
|
||||||
$this->updateExistingUser($user, $data);
|
$this->updateExistingUser($user, $data);
|
||||||
} else {
|
} else {
|
||||||
// nothing needs to be done if new and old data set are the same
|
// nothing needs to be done if new and old data set are the same
|
||||||
|
@ -123,6 +128,41 @@ class AccountManager {
|
||||||
return json_decode($result[0]['data'], true);
|
return json_decode($result[0]['data'], true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reset verification status if personal data changed
|
||||||
|
*
|
||||||
|
* @param array $oldData
|
||||||
|
* @param array $newData
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function updateVerifyStatus($oldData, $newData) {
|
||||||
|
|
||||||
|
$twitterVerified = isset($oldData[self::PROPERTY_TWITTER]['verified']) && $oldData[self::PROPERTY_TWITTER]['verified'] === self::VERIFIED;
|
||||||
|
$websiteVerified = isset($oldData[self::PROPERTY_WEBSITE]['verified']) && $oldData[self::PROPERTY_WEBSITE]['verified'] === self::VERIFIED;
|
||||||
|
$emailVerified = isset($oldData[self::PROPERTY_EMAIL]['verified']) && $oldData[self::PROPERTY_EMAIL]['verified'] === self::VERIFIED;
|
||||||
|
|
||||||
|
if($twitterVerified &&
|
||||||
|
$oldData[self::PROPERTY_TWITTER]['value'] !== $newData[self::PROPERTY_TWITTER]['value']
|
||||||
|
) {
|
||||||
|
$newData[self::PROPERTY_TWITTER]['value']['verified'] = self::NOT_VERIFIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($websiteVerified &&
|
||||||
|
$oldData[self::PROPERTY_WEBSITE]['value'] !== $newData[self::PROPERTY_WEBSITE]['value']
|
||||||
|
) {
|
||||||
|
$newData[self::PROPERTY_WEBSITE]['value']['verified'] = self::NOT_VERIFIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($emailVerified &&
|
||||||
|
$oldData[self::PROPERTY_EMAIL]['value'] !== $newData[self::PROPERTY_EMAIL]['value']
|
||||||
|
) {
|
||||||
|
$newData[self::PROPERTY_EMAIL]['value']['verified'] = self::NOT_VERIFIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $newData;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* add new user to accounts table
|
* add new user to accounts table
|
||||||
*
|
*
|
||||||
|
@ -171,21 +211,25 @@ class AccountManager {
|
||||||
[
|
[
|
||||||
'value' => $user->getDisplayName(),
|
'value' => $user->getDisplayName(),
|
||||||
'scope' => self::VISIBILITY_CONTACTS_ONLY,
|
'scope' => self::VISIBILITY_CONTACTS_ONLY,
|
||||||
|
'verified' => '0',
|
||||||
],
|
],
|
||||||
self::PROPERTY_ADDRESS =>
|
self::PROPERTY_ADDRESS =>
|
||||||
[
|
[
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'scope' => self::VISIBILITY_PRIVATE,
|
'scope' => self::VISIBILITY_PRIVATE,
|
||||||
|
'verified' => '0',
|
||||||
],
|
],
|
||||||
self::PROPERTY_WEBSITE =>
|
self::PROPERTY_WEBSITE =>
|
||||||
[
|
[
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'scope' => self::VISIBILITY_PRIVATE,
|
'scope' => self::VISIBILITY_PRIVATE,
|
||||||
|
'verified' => '0',
|
||||||
],
|
],
|
||||||
self::PROPERTY_EMAIL =>
|
self::PROPERTY_EMAIL =>
|
||||||
[
|
[
|
||||||
'value' => $user->getEMailAddress(),
|
'value' => $user->getEMailAddress(),
|
||||||
'scope' => self::VISIBILITY_CONTACTS_ONLY,
|
'scope' => self::VISIBILITY_CONTACTS_ONLY,
|
||||||
|
'verified' => '0',
|
||||||
],
|
],
|
||||||
self::PROPERTY_AVATAR =>
|
self::PROPERTY_AVATAR =>
|
||||||
[
|
[
|
||||||
|
@ -195,11 +239,13 @@ class AccountManager {
|
||||||
[
|
[
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'scope' => self::VISIBILITY_PRIVATE,
|
'scope' => self::VISIBILITY_PRIVATE,
|
||||||
|
'verified' => '0',
|
||||||
],
|
],
|
||||||
self::PROPERTY_TWITTER =>
|
self::PROPERTY_TWITTER =>
|
||||||
[
|
[
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'scope' => self::VISIBILITY_PRIVATE,
|
'scope' => self::VISIBILITY_PRIVATE,
|
||||||
|
'verified' => '0',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,6 +516,12 @@ class UsersController extends Controller {
|
||||||
public function getVerificationCode($account) {
|
public function getVerificationCode($account) {
|
||||||
|
|
||||||
$user = $this->userSession->getUser();
|
$user = $this->userSession->getUser();
|
||||||
|
|
||||||
|
if ($user === null) {
|
||||||
|
return new DataResponse([], Http::STATUS_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
$accountData = $this->accountManager->getUser($user);
|
||||||
$cloudId = $user->getCloudId();
|
$cloudId = $user->getCloudId();
|
||||||
$message = "Use my Federated Cloud ID to share with me: " . $cloudId;
|
$message = "Use my Federated Cloud ID to share with me: " . $cloudId;
|
||||||
$privateKey = $this->keyManager->getKey($user)->getPrivate();
|
$privateKey = $this->keyManager->getKey($user)->getPrivate();
|
||||||
|
@ -527,17 +533,20 @@ class UsersController extends Controller {
|
||||||
|
|
||||||
switch ($account) {
|
switch ($account) {
|
||||||
case 'verify-twitter':
|
case 'verify-twitter':
|
||||||
|
$accountData[AccountManager::PROPERTY_TWITTER]['verified'] = AccountManager::VERIFICATION_IN_PROGRESS;
|
||||||
$msg = $this->l10n->t('In order to verify your Twitter account post following tweet on Twitter:');
|
$msg = $this->l10n->t('In order to verify your Twitter account post following tweet on Twitter:');
|
||||||
$code = $codeMd5;
|
$code = $codeMd5;
|
||||||
break;
|
break;
|
||||||
case 'verify-website':
|
case 'verify-website':
|
||||||
|
$accountData[AccountManager::PROPERTY_WEBSITE]['verified'] = AccountManager::VERIFICATION_IN_PROGRESS;
|
||||||
$msg = $this->l10n->t('In order to verify your Website store following content in your webroot at \'CloudIdVerificationCode.txt\':');
|
$msg = $this->l10n->t('In order to verify your Website store following content in your webroot at \'CloudIdVerificationCode.txt\':');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return new DataResponse([], Http::STATUS_BAD_REQUEST);
|
return new DataResponse([], Http::STATUS_BAD_REQUEST);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->accountManager->updateUser($user, $accountData);
|
||||||
|
|
||||||
return new DataResponse(['msg' => $msg, 'code' => $code]);
|
return new DataResponse(['msg' => $msg, 'code' => $code]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue