From d119e2577cb22ef41c24e4522ae41f0ae1be4408 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 10 Oct 2023 20:20:18 -0600 Subject: [PATCH] Update user:admin command, improve logic. Fixes #2465 --- app/Console/Commands/UserAdmin.php | 26 ++++++++++++++------------ app/Console/Commands/UserToggle2FA.php | 6 ++++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/Console/Commands/UserAdmin.php b/app/Console/Commands/UserAdmin.php index 8a485c52b..3b15d0dfa 100644 --- a/app/Console/Commands/UserAdmin.php +++ b/app/Console/Commands/UserAdmin.php @@ -3,16 +3,17 @@ namespace App\Console\Commands; use Illuminate\Console\Command; +use Illuminate\Contracts\Console\PromptsForMissingInput; use App\User; -class UserAdmin extends Command +class UserAdmin extends Command implements PromptsForMissingInput { /** * The name and signature of the console command. * * @var string */ - protected $signature = 'user:admin {id}'; + protected $signature = 'user:admin {username}'; /** * The console command description. @@ -22,13 +23,15 @@ class UserAdmin extends Command protected $description = 'Make a user an admin, or remove admin privileges.'; /** - * Create a new command instance. + * Prompt for missing input arguments using the returned questions. * - * @return void + * @return array */ - public function __construct() + protected function promptForMissingArgumentsUsing() { - parent::__construct(); + return [ + 'username' => 'Which username should we toggle admin privileges for?', + ]; } /** @@ -38,16 +41,15 @@ class UserAdmin extends Command */ public function handle() { - $id = $this->argument('id'); - if(ctype_digit($id) == true) { - $user = User::find($id); - } else { - $user = User::whereUsername($id)->first(); - } + $id = $this->argument('username'); + + $user = User::whereUsername($id)->first(); + if(!$user) { $this->error('Could not find any user with that username or id.'); exit; } + $this->info('Found username: ' . $user->username); $state = $user->is_admin ? 'Remove admin privileges from this user?' : 'Add admin privileges to this user?'; $confirmed = $this->confirm($state); diff --git a/app/Console/Commands/UserToggle2FA.php b/app/Console/Commands/UserToggle2FA.php index c3b368608..eed6843da 100644 --- a/app/Console/Commands/UserToggle2FA.php +++ b/app/Console/Commands/UserToggle2FA.php @@ -33,6 +33,7 @@ class UserToggle2FA extends Command implements PromptsForMissingInput 'username' => 'Which username should we disable 2FA for?', ]; } + /** * Execute the console command. */ @@ -40,6 +41,11 @@ class UserToggle2FA extends Command implements PromptsForMissingInput { $user = User::whereUsername($this->argument('username'))->first(); + if(!$user) { + $this->error('Could not find any user with that username'); + exit; + } + if(!$user->{'2fa_enabled'}) { $this->info('User did not have 2FA enabled!'); return;