«Подготовка модулей» между ключом продукта и мастером: bj узнаёт состав лицензии, ставит модули, которые в неё входят (из комплекта образа, если там тот же выпуск, — без скачивания), запускает их службы и открывает мастер; после активации ключа и при изменении состава лицензии модули ставятся сразу, а не при следующем запуске bj
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -76,6 +76,7 @@ func registerSetup(mux *http.ServeMux, a *admin, rc *RuntimeConfig, svc *Service
|
||||
mux.HandleFunc("/admin/setup/fancy/acc-prefix", h.accPrefix)
|
||||
mux.HandleFunc("/admin/setup/license", h.saveLicense)
|
||||
mux.HandleFunc("/admin/setup/license/activate", h.licenseActivate)
|
||||
registerPrepare(mux, h) // «Подготовка модулей»: после ключа — модули лицензии, потом мастер
|
||||
mux.HandleFunc("/admin/setup/license/renew", h.licenseRenewNow)
|
||||
mux.HandleFunc("/admin/setup/logo", h.saveLogo)
|
||||
mux.HandleFunc("/admin/setup/logo/reset", h.resetLogo)
|
||||
@@ -1425,8 +1426,12 @@ func (h *setupHandlers) licenseActivate(w http.ResponseWriter, r *http.Request)
|
||||
setupFlash(w, r, "Лицензия: активация не удалась — "+err.Error())
|
||||
return
|
||||
}
|
||||
st := licenseStatus(h.rc)
|
||||
setupFlash(w, r, fmt.Sprintf("Лицензия активирована: %s, план %s, %s", st.Tenant, st.Plan, st.Message))
|
||||
// дальше — «Подготовка модулей»: модули лицензии ставятся и запускаются, затем возврат туда, откуда пришли
|
||||
next := safeReturnPath(r.FormValue("return_to"))
|
||||
if strings.HasPrefix(next, "/admin/wizard") {
|
||||
next = "/admin/wizard" // мастер сам откроется на первом несделанном шаге — теперь с шагами модулей лицензии
|
||||
}
|
||||
http.Redirect(w, r, "/admin/setup/prepare?next="+url.QueryEscape(next), http.StatusSeeOther)
|
||||
}
|
||||
|
||||
// licenseRenewNow — POST /admin/setup/license/renew: продлить ключ сейчас.
|
||||
|
||||
Reference in New Issue
Block a user