// package page_login -- страница логина package page_login import ( _ "embed" "net/http" "time" "github.com/gofiber/fiber/v2" . "gitp78su.ipnodns.ru/svi/kern" . "gitp78su.ipnodns.ru/svi/kern/kc/helpers" . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes" . "wartank/app/lev0/types" "wartank/app/lev1/web_render" ) // СтраницаЛогин -- страница логина type СтраницаЛогин struct { лог ILogBuf рендер ИВебРендер } //go:embed login.tmpl.html var стрЛогин string // НовСтраницаЛогин func НовСтраницаЛогин(конт IKernelCtx) *СтраницаЛогин { лог := NewLogBuf() Hassert(конт != nil, "НовСтраницаЛогин(): ИЯдроКонтекст==nil") сам := &СтраницаЛогин{ лог: лог, рендер: web_render.НовВебРендер(стрЛогин), } сам.рендер.Доб("{.err}", "") файбер := конт.Get("fiberApp").Val().(*fiber.App) файбер.Get("/gui/login", сам.получЛогин) файбер.Post("/gui/login", сам.постЛогин) return сам } // Возвращает страницу логина func (сам *СтраницаЛогин) получЛогин(кнт *fiber.Ctx) error { сам.лог.Debug("СтраницаЛогин.логин()\n") кнт.Set("Content-type", "text/html; charset=utf8;") стрРез := сам.рендер.Получ() return кнт.SendString(стрРез) } type LoginRequest struct { Логин_ string `form:"login"` Пароль_ string `form:"password"` КонтрольноеСлово_ string `form:"control_word"` } // Вызывается при попытке войти func (сам *СтраницаЛогин) постЛогин(кнт *fiber.Ctx) error { запрос := new(LoginRequest) if err := кнт.BodyParser(запрос); err != nil { return кнт.Redirect("/gui/login", http.StatusSeeOther) } сам.лог.Info("СтраницаЛогин.логин(): : %#+v\n", *запрос) if запрос.Логин_ == "" || запрос.Пароль_ == "" { return кнт.Redirect("/gui/login", http.StatusSeeOther) } if запрос.Логин_ != "svi" || запрос.Пароль_ != "Lera_07091978" { return кнт.Redirect("/gui/login", http.StatusSeeOther) } кнт.Cookie(&fiber.Cookie{ Name: "login", Value: "svi", Expires: time.Now().Add(24 * time.Hour), HTTPOnly: true, }) return кнт.Redirect("/gui/bot", http.StatusSeeOther) }