Working on check data

This commit is contained in:
Hillel Coren 2017-05-15 16:32:49 +03:00
parent 08901fa7d0
commit 2e3c857e80

View File

@ -80,6 +80,7 @@ class CheckData extends Command
//$this->checkUserAccounts();
if (! $this->option('client_id')) {
$this->checkOAuth();
$this->checkInvitations();
$this->checkFailedJobs();
$this->checkAccountData();
@ -107,6 +108,50 @@ class CheckData extends Command
$this->log .= $str . "\n";
}
private function checkOAuth()
{
// check for duplicate oauth ids
$users = DB::table('users')
->whereNotNull('oauth_user_id')
->groupBy('users.oauth_user_id')
->havingRaw('count(users.id) > 1')
->get(['users.oauth_user_id']);
$this->logMessage(count($users) . ' users with duplicate oauth ids');
if (count($users) > 0) {
$this->isValid = false;
}
if ($this->option('fix') == 'true') {
foreach ($users as $user) {
$first = true;
$this->logMessage('checking ' . $user->oauth_user_id);
$matches = DB::table('users')
->where('oauth_user_id', '=', $user->oauth_user_id)
->orderBy('id')
->get(['id']);
foreach ($matches as $match) {
if ($first) {
$this->logMessage('skipping ' . $match->id);
$first = false;
continue;
}
$this->logMessage('updating ' . $match->id);
DB::table('users')
->where('id', '=', $match->id)
->where('oauth_user_id', '=', $user->oauth_user_id)
->update([
'oauth_user_id' => null,
'oauth_provider_id' => null,
]);
}
}
}
}
private function checkLookupData()
{
$tables = [
@ -198,7 +243,7 @@ class CheckData extends Command
if ($this->option('fix') == 'true') {
foreach ($contacts as $contact) {
DB::table('contacts')
->where('id', $contact->id)
->where('id', '=', $contact->id)
->whereNull('contact_key')
->update([
'contact_key' => strtolower(str_random(RANDOM_KEY_LENGTH)),