Учёт DEPO: скрипт снова выполняется; логин bj виден в обоих способах; новые логин и пароль — только после проверки входа

- EXEC(...) в T-SQL склеивает только строки и переменные: REPLACE/QUOTENAME внутри
  давали ошибку 102, и SQL Server отклонял весь скрипт (.06.4–.06.6). Команда входа
  собирается в @sql заранее; тест ловит вызовы функций внутри EXEC; живая проверка
  синтаксиса на SQL Server без выполнения (SET PARSEONLY) — TestDepoSetupScriptParseLive.
- «Логин bj / Пароль bj» и в способе «Дать логин администратора»: на общем сервере
  bj_user может быть занят другим bj — подготовка сменила бы ему пароль. Предупреждение.
- Показ скрипта на странице ничего не сохраняет. Логин и пароль из выданного скрипта
  и из «Проверить подключение» хранятся черновиком (DepoNewUser/DepoNewPass) и
  становятся рабочими только после успешного входа: службы bj с неверным паролем
  за минуты блокировали логин на сервере (CHECK_POLICY) — у всех, кто им пользуется.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-06 15:35:36 +03:00
parent 13c252ae3d
commit 7af6cdf2f6
7 changed files with 190 additions and 27 deletions
+3 -1
View File
@@ -324,7 +324,9 @@ func (h *setupHandlers) renderWizard(w http.ResponseWriter, r *http.Request) {
if step == 3 {
d.Sub = depoWizardSub(r.URL.Query().Get("sub"))
d.DepoUser, d.DepoPass = depoSetupLogin(s.Fancy), s.Fancy.Password
if s.Fancy.User != d.DepoUser || d.DepoPass == "" {
if s.Fancy.DepoNewUser != "" { // скрипт уже выдан, вход ещё не проверен — те же логин и пароль, что в нём
d.DepoUser, d.DepoPass = s.Fancy.DepoNewUser, s.Fancy.DepoNewPass
} else if s.Fancy.User != d.DepoUser || d.DepoPass == "" {
d.DepoPass = depoGenPassword()
}
d.DepoMode = "auto"