| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // 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)
- }
|