diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index 143526c038..dbe68aca16 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -1058,7 +1058,12 @@ class DBStructure DBA::insert('user', ['uid' => 0]); $lastid = DBA::lastInsertId(); if ($lastid != 0) { - DBA::update('user', ['uid' => 0], ['uid' => $lastid]); + $user = [ + "verified" => true, + "page-flags" => User::PAGE_FLAGS_SOAPBOX, + "account-type" => User::ACCOUNT_TYPE_RELAY, + ]; + DBA::update('user', $user, ['uid' => $lastid]); } } diff --git a/src/Worker/ExpireAndRemoveUsers.php b/src/Worker/ExpireAndRemoveUsers.php index c8344b6fd9..f28f410b96 100644 --- a/src/Worker/ExpireAndRemoveUsers.php +++ b/src/Worker/ExpireAndRemoveUsers.php @@ -33,9 +33,14 @@ class ExpireAndRemoveUsers public static function execute() { // expire any expired regular accounts. Don't expire forums. - $condition = ["NOT `account_expired` AND `account_expires_on` > ? AND `account_expires_on` < UTC_TIMESTAMP() AND `page-flags` = 0", DBA::NULL_DATETIME]; + $condition = ["NOT `account_expired` AND `account_expires_on` > ? AND `account_expires_on` < UTC_TIMESTAMP() AND `page-flags` = ? AND `uid` != ?", + DBA::NULL_DATETIME, User::PAGE_FLAGS_NORMAL, 0]; DBA::update('user', ['account_expired' => true], $condition); + // Ensure to never remove the user with uid=0 + DBA::update('user', ['account_expired' => false, 'account_removed' => false, + 'account_expires_on' => DBA::NULL_DATETIME], ['uid' => 0]); + // Remove any freshly expired account $users = DBA::select('user', ['uid'], ['account_expired' => true, 'account_removed' => false]); while ($user = DBA::fetch($users)) {