Skip user removal if it's already been removed in Console\User

This commit is contained in:
Hypolite Petovan 2020-05-09 11:05:20 -04:00
parent 5765b6f772
commit 184fa9f980
2 changed files with 9 additions and 4 deletions

View file

@ -304,19 +304,24 @@ HELP;
}
}
$user = $this->dba->selectFirst('user', ['uid'], ['nickname' => $nick]);
$user = $this->dba->selectFirst('user', ['uid', 'account_removed'], ['nickname' => $nick]);
if (empty($user)) {
throw new RuntimeException($this->l10n->t('User not found'));
}
if (!empty($user['account_removed'])) {
$this->out($this->l10n->t('User has already been marked for deletion.'));
return true;
}
if (!$this->getOption('q')) {
$this->out($this->l10n->t('Type "yes" to delete %s', $nick));
if (CliPrompt::prompt() !== 'yes') {
throw new RuntimeException('Delete abort.');
throw new RuntimeException($this->l10n->t('Deletion aborted.'));
}
}
return UserModel::remove($user['uid'] ?? -1);
return UserModel::remove($user['uid']);
}
/**

View file

@ -1162,7 +1162,7 @@ class User
// unique), so it cannot be re-registered in the future.
DBA::insert('userd', ['username' => $user['nickname']]);
// The user and related data will be deleted in "cron_expire_and_remove_users" (cronjobs.php)
// The user and related data will be deleted in Friendica\Worker\CronJobs::expireAndRemoveUsers()
DBA::update('user', ['account_removed' => true, 'account_expires_on' => DateTimeFormat::utc('now + 7 day')], ['uid' => $uid]);
Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::REMOVAL, $uid);