Настройки: ключ кабинета показывается целиком — закрытый контур, нужен при переустановке кабинета

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-18 09:42:58 +03:00
parent 222d48e740
commit f51414269d
4 changed files with 10 additions and 21 deletions
+5 -13
View File
@@ -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 = "Ключ удалён: кабинет больше не сможет обращаться к ядру."