diff --git a/app/Console/Commands/Maintenance/FixOrphanAccounts.php b/app/Console/Commands/Maintenance/FixOrphanAccounts.php new file mode 100644 index 00000000..6286f1db --- /dev/null +++ b/app/Console/Commands/Maintenance/FixOrphanAccounts.php @@ -0,0 +1,88 @@ +where('secret', '') + ->where('algorithm', '') + ->where('digits', 0) + ->whereNull('period') + ->whereNull('counter') + ->get(); + + $this->line(sprintf('%d inconsistent accounts found', $twofaccounts->count())); + + if ($twofaccounts->count() == 0) { + $this->info('Nothing to fix'); + + return; + } + + $this->line('Try to fix them...'); + + foreach ($twofaccounts as $twofaccount) { + if ($twofaccount->legacy_uri === __('errors.indecipherable')) { + $this->error(sprintf('Account #%d cannot be deciphered', $twofaccount->id)); + } else { + try { + // Get a consistent account + $twofaccount->fillWithURI($twofaccount->legacy_uri, false, true); + $twofaccount->save(); + + $this->info(sprintf('Account #%d fixed', $twofaccount->id)); + } catch (\Exception $ex) { + $this->error(sprintf('Error while updating account #%d', $twofaccount->id)); + } + } + } + + $this->line('Task completed'); + } +}