| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // package page_login -- страница логина
- package page_login
- import (
- _ "embed"
- "net/http"
- "time"
- "github.com/gofiber/fiber/v2"
- . "wartank/app/lev0/types"
- "wartank/app/lev1/web_render"
- "wartank/kernel"
- . "wartank/kernel/kernel_types"
- )
- // СтраницаЛогин -- страница логина
- type СтраницаЛогин struct {
- лог ИЯдроЛог
- рендер ИВебРендер
- }
- //go:embed login.tmpl.html
- var стрЛогин string
- // НовСтраницаЛогин
- func НовСтраницаЛогин(конт ИЯдроКонтекст) *СтраницаЛогин {
- лог := kernel.НовЛог("СтраницаЛогин")
- лог.Паника(конт == nil, "НовСтраницаЛогин(): ИЯдроКонтекст==nil")
- сам := &СтраницаЛогин{
- лог: лог,
- рендер: web_render.НовВебРендер(стрЛогин),
- }
- сам.рендер.Доб("{.err}", "")
- файбер := конт.Получ("fiberApp").(*fiber.App)
- файбер.Get("/gui/login", сам.получЛогин)
- файбер.Post("/gui/login", сам.постЛогин)
- return сам
- }
- // Возвращает страницу логина
- func (сам *СтраницаЛогин) получЛогин(кнт *fiber.Ctx) error {
- сам.лог.Отладка("СтраницаЛогин.логин()\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)
- }
- сам.лог.Инфо("СтраницаЛогин.логин(): : %#+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)
- }
|