Skip to content

Commit

Permalink
store verification status in accounts table and update lookup server
Browse files Browse the repository at this point in the history
Signed-off-by: Bjoern Schiessle <[email protected]>
  • Loading branch information
schiessle committed Apr 6, 2017
1 parent dd88a10 commit 046d2fe
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
46 changes: 46 additions & 0 deletions lib/private/Accounts/AccountManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ class AccountManager {
const PROPERTY_ADDRESS = 'address';
const PROPERTY_TWITTER = 'twitter';

const NOT_VERIFIED = '0';
const VERIFICATION_IN_PROGRESS = '1';
const VERIFIED = '2';

/** @var IDBConnection database connection */
private $connection;

Expand Down Expand Up @@ -85,6 +89,7 @@ public function updateUser(IUser $user, $data) {
if (empty($userData)) {
$this->insertNewUser($user, $data);
} elseif ($userData !== $data) {
$data = $this->updateVerifyStatus($userData, $data);
$this->updateExistingUser($user, $data);
} else {
// nothing needs to be done if new and old data set are the same
Expand Down Expand Up @@ -123,6 +128,41 @@ public function getUser(IUser $user) {
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
*
Expand Down Expand Up @@ -171,21 +211,25 @@ protected function buildDefaultUserRecord(IUser $user) {
[
'value' => $user->getDisplayName(),
'scope' => self::VISIBILITY_CONTACTS_ONLY,
'verified' => '0',
],
self::PROPERTY_ADDRESS =>
[
'value' => '',
'scope' => self::VISIBILITY_PRIVATE,
'verified' => '0',
],
self::PROPERTY_WEBSITE =>
[
'value' => '',
'scope' => self::VISIBILITY_PRIVATE,
'verified' => '0',
],
self::PROPERTY_EMAIL =>
[
'value' => $user->getEMailAddress(),
'scope' => self::VISIBILITY_CONTACTS_ONLY,
'verified' => '0',
],
self::PROPERTY_AVATAR =>
[
Expand All @@ -195,11 +239,13 @@ protected function buildDefaultUserRecord(IUser $user) {
[
'value' => '',
'scope' => self::VISIBILITY_PRIVATE,
'verified' => '0',
],
self::PROPERTY_TWITTER =>
[
'value' => '',
'scope' => self::VISIBILITY_PRIVATE,
'verified' => '0',
],
];
}
Expand Down
5 changes: 5 additions & 0 deletions settings/Controller/UsersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,7 @@ public function destroy($id) {
public function getVerificationCode($account) {

$user = $this->userSession->getUser();
$accountData = $this->accountManager->getUser($user);
$cloudId = $user->getCloudId();
$message = "Use my Federated Cloud ID to share with me: " . $cloudId;
$privateKey = $this->keyManager->getKey($user)->getPrivate();
Expand All @@ -574,17 +575,21 @@ public function getVerificationCode($account) {

switch ($account) {
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:');
$code = $codeMd5;
break;
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\':');
break;
default:
return new DataResponse([], Http::STATUS_BAD_REQUEST);
break;
}

$this->accountManager->updateUser($user, $accountData);

return new DataResponse(['msg' => $msg, 'code' => $code]);
}

Expand Down

0 comments on commit 046d2fe

Please sign in to comment.