page_login.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // package page_login -- страница логина
  2. package page_login
  3. import (
  4. _ "embed"
  5. "net/http"
  6. "time"
  7. "github.com/gofiber/fiber/v2"
  8. . "gitp78su.ipnodns.ru/svi/kern"
  9. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  10. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  11. . "wartank/app/lev0/types"
  12. "wartank/app/lev1/web_render"
  13. )
  14. // СтраницаЛогин -- страница логина
  15. type СтраницаЛогин struct {
  16. лог ILogBuf
  17. рендер ИВебРендер
  18. }
  19. //go:embed login.tmpl.html
  20. var стрЛогин string
  21. // НовСтраницаЛогин
  22. func НовСтраницаЛогин(конт IKernelCtx) *СтраницаЛогин {
  23. лог := NewLogBuf()
  24. Hassert(конт != nil, "НовСтраницаЛогин(): ИЯдроКонтекст==nil")
  25. сам := &СтраницаЛогин{
  26. лог: лог,
  27. рендер: web_render.НовВебРендер(стрЛогин),
  28. }
  29. сам.рендер.Доб("{.err}", "")
  30. файбер := конт.Get("fiberApp").Val().(*fiber.App)
  31. файбер.Get("/gui/login", сам.получЛогин)
  32. файбер.Post("/gui/login", сам.постЛогин)
  33. return сам
  34. }
  35. // Возвращает страницу логина
  36. func (сам *СтраницаЛогин) получЛогин(кнт *fiber.Ctx) error {
  37. сам.лог.Debug("СтраницаЛогин.логин()\n")
  38. кнт.Set("Content-type", "text/html; charset=utf8;")
  39. стрРез := сам.рендер.Получ()
  40. return кнт.SendString(стрРез)
  41. }
  42. type LoginRequest struct {
  43. Логин_ string `form:"login"`
  44. Пароль_ string `form:"password"`
  45. КонтрольноеСлово_ string `form:"control_word"`
  46. }
  47. // Вызывается при попытке войти
  48. func (сам *СтраницаЛогин) постЛогин(кнт *fiber.Ctx) error {
  49. запрос := new(LoginRequest)
  50. if err := кнт.BodyParser(запрос); err != nil {
  51. return кнт.Redirect("/gui/login", http.StatusSeeOther)
  52. }
  53. сам.лог.Info("СтраницаЛогин.логин(): : %#+v\n", *запрос)
  54. if запрос.Логин_ == "" || запрос.Пароль_ == "" {
  55. return кнт.Redirect("/gui/login", http.StatusSeeOther)
  56. }
  57. if запрос.Логин_ != "svi" || запрос.Пароль_ != "Lera_07091978" {
  58. return кнт.Redirect("/gui/login", http.StatusSeeOther)
  59. }
  60. кнт.Cookie(&fiber.Cookie{
  61. Name: "login",
  62. Value: "svi",
  63. Expires: time.Now().Add(24 * time.Hour),
  64. HTTPOnly: true,
  65. })
  66. return кнт.Redirect("/gui/bot", http.StatusSeeOther)
  67. }