mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-24 12:07:23 +08:00
improve user destroy
This commit is contained in:
@@ -17,6 +17,7 @@ use App\Models\UsernameChangeLog;
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Nexus\Database\NexusDB;
|
use Nexus\Database\NexusDB;
|
||||||
@@ -623,13 +624,21 @@ class UserRepository extends BaseRepository
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy($id, $reasonKey = 'user.destroy_by_admin')
|
public function destroy(Collection|int $id, $reasonKey = 'user.destroy_by_admin')
|
||||||
{
|
{
|
||||||
if (!isRunningInConsole()) {
|
if (!isRunningInConsole()) {
|
||||||
user_can('user-delete', true);
|
user_can('user-delete', true);
|
||||||
}
|
}
|
||||||
$uidArr = Arr::wrap($id);
|
if (is_int($id)) {
|
||||||
$users = User::query()->with('language')->whereIn('id', $uidArr)->get(['id', 'username', 'lang']);
|
$uidArr = Arr::wrap($id);
|
||||||
|
$users = User::query()->with('language')->whereIn('id', $uidArr)->get(['id', 'username', 'lang']);
|
||||||
|
} else {
|
||||||
|
$users = $id;
|
||||||
|
$uidArr = $users->pluck('id')->toArray();
|
||||||
|
}
|
||||||
|
if (empty($uidArr)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
$tables = [
|
$tables = [
|
||||||
'users' => 'id',
|
'users' => 'id',
|
||||||
'hit_and_runs' => 'uid',
|
'hit_and_runs' => 'uid',
|
||||||
@@ -641,6 +650,8 @@ class UserRepository extends BaseRepository
|
|||||||
'attendance' => 'uid',
|
'attendance' => 'uid',
|
||||||
'attendance_logs' => 'uid',
|
'attendance_logs' => 'uid',
|
||||||
'login_logs' => 'uid',
|
'login_logs' => 'uid',
|
||||||
|
'oauth_access_tokens' => 'user_id',
|
||||||
|
'oauth_auth_codes' => 'user_id',
|
||||||
];
|
];
|
||||||
foreach ($tables as $table => $key) {
|
foreach ($tables as $table => $key) {
|
||||||
\Nexus\Database\NexusDB::table($table)->whereIn($key, $uidArr)->delete();
|
\Nexus\Database\NexusDB::table($table)->whereIn($key, $uidArr)->delete();
|
||||||
@@ -655,8 +666,10 @@ class UserRepository extends BaseRepository
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
UserBanLog::query()->insert($userBanLogs);
|
UserBanLog::query()->insert($userBanLogs);
|
||||||
do_action("user_delete", $id);
|
if (is_int($id)) {
|
||||||
fire_event("user_destroyed", $id);
|
do_action("user_delete", $id);
|
||||||
|
fire_event("user_destroyed", $id);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-6
@@ -670,18 +670,19 @@ function docleanup($forceAll = 0, $printProgress = false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//destroy disabled accounts
|
//destroy disabled accounts
|
||||||
|
$userRep = new \App\Repositories\UserRepository();
|
||||||
$destroyDisabledDays = get_setting('account.destroy_disabled');
|
$destroyDisabledDays = get_setting('account.destroy_disabled');
|
||||||
if ($destroyDisabledDays > 0) {
|
if ($destroyDisabledDays > 0) {
|
||||||
$secs = $destroyDisabledDays*24*60*60;
|
$secs = $destroyDisabledDays*24*60*60;
|
||||||
$dt = date("Y-m-d H:i:s",(TIMENOW - $secs));
|
$dt = date("Y-m-d H:i:s",(TIMENOW - $secs));
|
||||||
$users = \App\Models\User::query()
|
\App\Models\User::query()
|
||||||
->where('enabled', 'no')
|
->where('enabled', 'no')
|
||||||
->where("last_access","<", $dt)
|
->where("last_access","<", $dt)
|
||||||
->get(['id']);
|
->select(['id', 'username', 'lang'])
|
||||||
if ($users->isNotEmpty()) {
|
->orderBy("id", "asc")
|
||||||
$userRep = new \App\Repositories\UserRepository();
|
->chunk(2000, function (\Illuminate\Support\Collection $users) use ($userRep) {
|
||||||
$userRep->destroy($users->pluck('id')->toArray(), 'cleanup.destroy_disabled_account');
|
$userRep->destroy($users, 'cleanup.destroy_disabled_account');
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
$log = "destroy disabled accounts";
|
$log = "destroy disabled accounts";
|
||||||
do_log($log);
|
do_log($log);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
defined('VERSION_NUMBER') || define('VERSION_NUMBER', '1.8.9');
|
defined('VERSION_NUMBER') || define('VERSION_NUMBER', '1.8.10');
|
||||||
defined('RELEASE_DATE') || define('RELEASE_DATE', '2024-03-18');
|
defined('RELEASE_DATE') || define('RELEASE_DATE', '2024-03-21');
|
||||||
defined('IN_TRACKER') || define('IN_TRACKER', false);
|
defined('IN_TRACKER') || define('IN_TRACKER', false);
|
||||||
defined('PROJECTNAME') || define("PROJECTNAME","NexusPHP");
|
defined('PROJECTNAME') || define("PROJECTNAME","NexusPHP");
|
||||||
defined('NEXUSPHPURL') || define("NEXUSPHPURL","https://nexusphp.org");
|
defined('NEXUSPHPURL') || define("NEXUSPHPURL","https://nexusphp.org");
|
||||||
|
|||||||
Reference in New Issue
Block a user