Skip to content
Snippets Groups Projects
Unverified Commit 6f41a3ed authored by Bjoern Schiessle's avatar Bjoern Schiessle Committed by Morris Jobke
Browse files

store verification status in accounts table and update lookup server

parent c9ccdca1
No related branches found
No related tags found
No related merge requests found
...@@ -53,6 +53,10 @@ class AccountManager { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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]);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment