diff --git a/app/Filament/Resources/User/UserResource.php b/app/Filament/Resources/User/UserResource.php index fcb733b1..e2f86cde 100644 --- a/app/Filament/Resources/User/UserResource.php +++ b/app/Filament/Resources/User/UserResource.php @@ -6,6 +6,7 @@ use App\Filament\OptionsTrait; use App\Filament\Resources\User\UserResource\Pages; use App\Filament\Resources\User\UserResource\RelationManagers; use App\Models\User; +use App\Repositories\UserRepository; use Filament\Forms; use Filament\Forms\Components\Grid; use Filament\Resources\Form; @@ -15,6 +16,8 @@ use Filament\Tables; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\HtmlString; class UserResource extends Resource @@ -85,9 +88,7 @@ class UserResource extends Resource ->actions([ Tables\Actions\ViewAction::make(), ]) - ->bulkActions([ -// Tables\Actions\DeleteBulkAction::make(), - ]); + ->bulkActions(self::getBulkActions()); } public static function getRelations(): array @@ -108,4 +109,21 @@ class UserResource extends Resource ]; } + public static function getBulkActions(): array + { + $actions = []; + if (Auth::user()->class >= User::CLASS_SYSOP) { + $actions[] = Tables\Actions\BulkAction::make('confirm') + ->label(__('admin.resources.user.actions.confirm_bulk')) + ->requiresConfirmation() + ->deselectRecordsAfterCompletion() + ->action(function (Collection $records) { + $rep = new UserRepository(); + $rep->confirmUser($records->pluck('id')->toArray()); + }); + } + + return $actions; + } + } diff --git a/app/Repositories/UserRepository.php b/app/Repositories/UserRepository.php index f3f543a5..8e8a40d9 100644 --- a/app/Repositories/UserRepository.php +++ b/app/Repositories/UserRepository.php @@ -483,4 +483,18 @@ class UserRepository extends BaseRepository return $result; } + public function confirmUser($id): bool + { + $update = [ + 'status' => User::STATUS_CONFIRMED, + 'editsecret' => '', + ]; + User::query() + ->whereIn('id', Arr::wrap($id)) + ->where('status', User::STATUS_PENDING) + ->update($update); + + return true; + } + } diff --git a/resources/lang/en/admin.php b/resources/lang/en/admin.php index f27f10d4..82480c32 100644 --- a/resources/lang/en/admin.php +++ b/resources/lang/en/admin.php @@ -67,6 +67,7 @@ return [ 'grant_prop_form_prop' => 'Select prop', 'grant_prop_form_duration' => 'Duration', 'grant_prop_form_duration_help' => 'Unit: days. If left blank, the user has it permanently. Note: There is no time limit for Name Change Card, ignore this value.' , + 'confirm_bulk' => 'Bulk confirm', ] ], 'exam_user' => [ diff --git a/resources/lang/zh_CN/admin.php b/resources/lang/zh_CN/admin.php index fc54330f..ed68f5d7 100644 --- a/resources/lang/zh_CN/admin.php +++ b/resources/lang/zh_CN/admin.php @@ -67,6 +67,7 @@ return [ 'grant_prop_form_prop' => '选择道具', 'grant_prop_form_duration' => '有效时长', 'grant_prop_form_duration_help' => '单位:天。如果留空,用户永久拥有。注:改名卡没有时间限制,忽略该值。', + 'confirm_bulk' => '批量确认', ] ], 'exam_user' => [ diff --git a/resources/lang/zh_TW/admin.php b/resources/lang/zh_TW/admin.php index 16fdd38f..c46b91fd 100644 --- a/resources/lang/zh_TW/admin.php +++ b/resources/lang/zh_TW/admin.php @@ -67,6 +67,7 @@ return [ 'grant_prop_form_prop' => '選擇道具', 'grant_prop_form_duration' => '有效時長', 'grant_prop_form_duration_help' => '單位:天。如果留空,用戶永久擁有。註:改名卡沒有時間限製,忽略該值。', + 'confirm_bulk' => '批量確認', ] ], 'exam_user' => [