diff --git a/app/Console/Commands/ResetUserPassword.php b/app/Console/Commands/ResetUserPassword.php new file mode 100644 index 00000000..b5cd45b0 --- /dev/null +++ b/app/Console/Commands/ResetUserPassword.php @@ -0,0 +1,67 @@ +argument('email'); + if (empty($email)) { + $email = $this->ask('Email dell\'utente'); + } + + $user = User::where('email', $email)->first(); + if ($user === null) { + $this->error("Nessun utente trovato con email: {$email}"); + return self::FAILURE; + } + + $this->line("Utente trovato: {$user->name} ({$user->email})"); + + $password = $this->option('password'); + if (empty($password)) { + $password = $this->secret('Nuova password'); + $confirm = $this->secret('Conferma nuova password'); + + if ($password !== $confirm) { + $this->error('Le password non corrispondono'); + return self::FAILURE; + } + } + + $validator = Validator::make( + ['password' => $password], + ['password' => ['required', 'string', 'min:12']] + ); + + if ($validator->fails()) { + $this->error('Password troppo corta: minimo 12 caratteri'); + return self::FAILURE; + } + + $user->password = Hash::make($password); + $user->save(); + + if ($user->wasChanged('password')) { + $this->info("Password aggiornata con successo per {$user->email}"); + return self::SUCCESS; + } + + $this->error('Errore durante l\'aggiornamento della password'); + return self::FAILURE; + } +}