diff --git a/internal/lkgateway/participant_form.go b/internal/lkgateway/participant_form.go index 73d73cf..d12aa6c 100644 --- a/internal/lkgateway/participant_form.go +++ b/internal/lkgateway/participant_form.go @@ -31,6 +31,12 @@ const participantFormRecipient = "M2MOST@nsd.ru" var pfINNRe = regexp.MustCompile(`^\d{10}$`) var pfCodeRe = regexp.MustCompile(`^MC\d{10}$`) +// isProdIGW — текущий канал ИШ боевой. Анкету участника в НРД шлём ТОЛЬКО в бою: +// в тестовом/гостевом контуре отправка через шлюз заблокирована. +func isProdIGW(channel string) bool { + return strings.HasPrefix(strings.ToUpper(strings.TrimSpace(channel)), "PROD") +} + // participantFormData — поля анкеты (юридические реквизиты организации). type participantFormData struct { INN string @@ -287,6 +293,8 @@ func registerParticipantForm(mux *http.ServeMux, rc *RuntimeConfig, igwClient *i flash, flashKind = "Анкета не прошла проверку — исправьте поля ниже.", "err" case igwClient == nil || igwChannel == "": flash, flashKind = "Боевой ИШ не настроен (раздел «НРД», профиль prod-*). Отправка через шлюз недоступна — переключитесь в боевой контур.", "err" + case !isProdIGW(igwChannel): + flash, flashKind = "Сейчас выбран тестовый контур. Анкету участника шлём только в боевом контуре — переключитесь на профиль prod-* («НРД») и повторите.", "err" default: body, encErr := participantFormBytes(d) if encErr != nil { @@ -311,11 +319,11 @@ func registerParticipantForm(mux *http.ServeMux, rc *RuntimeConfig, igwClient *i } xmlPreview := participantFormXML(d) - participantFormRender(w, d, errs, action, flash, flashKind, xmlPreview, igwClient != nil && igwChannel != "") + participantFormRender(w, d, errs, action, flash, flashKind, xmlPreview, igwClient != nil && igwChannel != "", isProdIGW(igwChannel)) }) } -func participantFormRender(w http.ResponseWriter, d participantFormData, errs []string, action, flash, flashKind, xmlPreview string, igwReady bool) { +func participantFormRender(w http.ResponseWriter, d participantFormData, errs []string, action, flash, flashKind, xmlPreview string, igwConfigured, igwProd bool) { w.Header().Set("Content-Type", "text/html; charset=utf-8") inp := func(name, label, val, ph string) string { return `` @@ -335,9 +343,14 @@ func participantFormRender(w http.ResponseWriter, d participantFormData, errs [] flashHTML = `
` + html.EscapeString(flash) + `
` } igwBtn := `` - igwStatus := `

Боевой ИШ: настроен — анкету можно отправить через шлюз (#M2MPF).

` - if !igwReady { - igwStatus = `

Боевой ИШ: не настроен (раздел «НРД», профиль prod-*). Пока доступны «Скачать» и «Отправить письмом».

` + igwStatus := `

Боевой контур: да — анкету можно отправить через шлюз (#M2MPF).

` + if !igwProd { + igwBtn = `` + if igwConfigured { + igwStatus = `

Контур тестовый — анкету участника в НРД шлём только в боевом контуре. Переключитесь на профиль prod-* («НРД»). Пока доступны «Скачать» и «Отправить письмом».

` + } else { + igwStatus = `

Боевой ИШ: не настроен (раздел «НРД», профиль prod-*). Пока доступны «Скачать» и «Отправить письмом».

` + } } page := `Регистрация участника M2M