argument('username')); if ($username === '') { $this->error('用户名不能为空。'); return self::FAILURE; } $admin = AdminUser::query()->where('username', $username)->first(); if (! $admin) { $this->error("未找到后台管理员账号:{$username}"); return self::FAILURE; } $password = $this->resolvePassword(); if ($password === null) { return self::FAILURE; } if (! $this->option('yes')) { $name = $admin->name !== '' ? "({$admin->name})" : ''; if (! $this->confirm("确认修改后台管理员 {$admin->username}{$name} 的密码?", false)) { $this->warn('已取消修改。'); return self::FAILURE; } } $admin->forceFill([ 'password_hash' => $password, ])->save(); $this->info("后台管理员 {$admin->username} 的密码已更新。"); return self::SUCCESS; } private function resolvePassword(): ?string { $password = $this->option('password'); if ($password !== null) { $password = (string) $password; return $this->validatePassword($password) ? $password : null; } $password = (string) $this->secret('请输入新密码'); if (! $this->validatePassword($password)) { return null; } $confirmation = (string) $this->secret('请再次输入新密码'); if ($password !== $confirmation) { $this->error('两次输入的密码不一致。'); return null; } return $password; } private function validatePassword(string $password): bool { if (mb_strlen($password) < 6) { $this->error('密码长度不能少于 6 个字符。'); return false; } if (mb_strlen($password) > 255) { $this->error('密码长度不能超过 255 个字符。'); return false; } return true; } }