setDescription('Reset password for a specified user'); $this->addArgument('identifier', InputArgument::REQUIRED, 'Username or user ID'); $this->addOption('password', 'p', InputOption::VALUE_OPTIONAL, 'New password (min 6 characters). If omitted, will prompt interactively'); } public function handle(): int { $identifier = $this->input->getArgument('identifier'); // 按 ID(纯数字)或 username 查找用户 $user = is_numeric($identifier) ? User::find((int) $identifier) : User::query()->where('username', $identifier)->first(); if (! $user) { $this->error(sprintf('User "%s" not found.', $identifier)); return 1; } // 获取密码:优先 --password 选项,否则交互式隐藏输入 $new_password = $this->input->getOption('password'); if ($new_password === null) { $new_password = $this->secret('Enter new password'); if ($new_password === null) { $this->error('Password cannot be empty.'); return 1; } } // 密码长度校验(bcrypt 截断超过 72 字节的输入) if (strlen($new_password) < 6) { $this->error('Password must be at least 6 characters.'); return 1; } if (strlen($new_password) > 72) { $this->error('Password must not exceed 72 characters (bcrypt limit).'); return 1; } // password mutator 自动调用 password_hash() $user->password = $new_password; $user->save(); $this->info(sprintf("Password for user '%s' has been reset.", $user->username)); return 0; } }