diff --git a/internal/lkgateway/lkdist.go b/internal/lkgateway/lkdist.go index bc5c3c2..d87f368 100644 --- a/internal/lkgateway/lkdist.go +++ b/internal/lkgateway/lkdist.go @@ -49,17 +49,10 @@ func lkNewAPIKey() (string, error) { return "lk-" + hex.EncodeToString(b), nil } -// lkKeyRevealUntil — до какого момента ключ на странице настроек показывается целиком: -// сразу после создания администратору нужно переписать его в установщик кабинета. -var lkKeyRevealUntil time.Time - -// lkKeyForPage — ключ для страницы настроек: целиком сразу после создания, потом маска. -func lkKeyForPage(key string) string { - if key != "" && time.Now().Before(lkKeyRevealUntil) { - return key - } - return maskSecret(key) -} +// lkKeyForPage — ключ для страницы настроек. Показывается целиком: настройки ядра — +// закрытый контур, а при переустановке кабинета ключ нужно переписать в установщик; +// маскированный пришлось бы пересоздавать и менять на всех кабинетах. +func lkKeyForPage(key string) string { return key } // maskSecret — показать ключ так, чтобы его нельзя было списать со скриншота, // но можно было сверить с тем, что стоит у кабинета. @@ -320,8 +313,7 @@ func (h *setupHandlers) lkSaveDist(w http.ResponseWriter, r *http.Request) { return } s.APIKey = key - lkKeyRevealUntil = time.Now().Add(10 * time.Minute) // показать целиком один раз, чтобы переписать в установщик - msg = "Создан новый ключ доступа кабинета. Он показан целиком ниже в течение 10 минут — введите его в установщике кабинета (или в lk.env) и перезапустите службу кабинета, если она уже работала." + msg = "Создан новый ключ доступа кабинета. Введите его в установщике кабинета (или в lk.env); если кабинет уже работал — удалите там lk.json и пройдите установщик заново либо впишите ключ в lk.env и перезапустите службу." case "clearkey": s.APIKey = "" msg = "Ключ удалён: кабинет больше не сможет обращаться к ядру." diff --git a/internal/lkgateway/lkusers_admin_test.go b/internal/lkgateway/lkusers_admin_test.go index 6cf8b0b..45bd01f 100644 --- a/internal/lkgateway/lkusers_admin_test.go +++ b/internal/lkgateway/lkusers_admin_test.go @@ -19,7 +19,7 @@ func TestSetupPageLKUsersAndLink(t *testing.T) { rec := httptest.NewRecorder() render(rec, a.setup, SetupData{ page: nowPage("Настройка", "setup"), Settings: s, - LKKeyMask: maskSecret(s.LK.APIKey), LKAgent: lkAgentStatus(s), + LKKeyMask: lkKeyForPage(s.LK.APIKey), LKAgent: lkAgentStatus(s), LKUsers: []LKUser{ {ID: 1, Login: "manager", Contract: "ADMIN", FullName: "Сотрудник", Active: true, IsAdmin: true}, {ID: 2, Login: "br859", Contract: "БР-859", Active: false}, @@ -35,10 +35,7 @@ func TestSetupPageLKUsersAndLink(t *testing.T) { t.Errorf("в странице нет %q", want) } } - if strings.Contains(body, s.LK.APIKey) { - t.Error("ключ кабинета показан целиком без создания") - } - if !strings.Contains(body, "lk-0123") { - t.Error("маска ключа не показана") + if !strings.Contains(body, s.LK.APIKey) { + t.Error("ключ кабинета должен быть показан целиком: понадобится при переустановке") } } diff --git a/internal/lkgateway/web/templates/admin_help_lk.html b/internal/lkgateway/web/templates/admin_help_lk.html index bd9f90b..4f13c67 100644 --- a/internal/lkgateway/web/templates/admin_help_lk.html +++ b/internal/lkgateway/web/templates/admin_help_lk.html @@ -6,7 +6,7 @@
Речь о нашем модуле bj-lk — кабинете, который клиенты открывают в браузере. Он ставится отдельно от ядра: на веб-сервер депозитария или на обычный хостинг с выделенным именем. Своей базы у кабинета нет, данные клиентов он не хранит — берёт у ядра на время запроса.
Настройки → «Личный кабинет» → «Кабинет клиента на своём сервере»: создайте ключ доступа (сразу после создания он показан целиком 10 минут — перепишите его для установщика) и скачайте архив. В архиве — исполняемый файл, служба systemd, файл настроек службы, установщик и README. Ключа в архиве нет.
+Настройки → «Личный кабинет» → «Кабинет клиента на своём сервере»: создайте ключ доступа (он показан на странице целиком — его нужно ввести в установщике) и скачайте архив. В архиве — исполняемый файл, служба systemd, файл настроек службы, установщик и README. Ключа в архиве нет.
tar xzf bj-lk-ГГГГ-ММ-ДД.tar.gz
diff --git a/internal/lkgateway/web/templates/admin_setup.html b/internal/lkgateway/web/templates/admin_setup.html
index 359fe6b..15a57d2 100644
--- a/internal/lkgateway/web/templates/admin_setup.html
+++ b/internal/lkgateway/web/templates/admin_setup.html
@@ -617,7 +617,7 @@ function hbBind(inp,box,list,onPick){
{{if .Settings.LK.APIKey}}{{end}}
- Ключ показан не полностью. В архив он не попадает: его вводят в установщике кабинета (или вписывают в lk.env при установке без браузера). Целиком ключ виден один раз — сразу после создания.
+ В архив ключ не попадает: его вводят в установщике кабинета (или вписывают в lk.env при установке без браузера). Здесь он показан целиком — понадобится при переустановке кабинета.