page_login.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. файбер.Post("/gui/login_show", сам.получЛогин)
  32. файбер.Post("/gui/login_make", сам.постЛогин)
  33. return сам
  34. }
  35. var (
  36. strBotList = `
  37. <div id="main" hx-post="/gui/bot/list_show" hx-trigger="load" hx-swap-oob""></div>
  38. `
  39. )
  40. // Возвращает страницу логина
  41. func (сам *СтраницаЛогин) получЛогин(кнт *fiber.Ctx) error {
  42. сам.лог.Debug("СтраницаЛогин.логин()\n")
  43. кнт.Set("Content-type", "text/html; charset=utf8;")
  44. имя := кнт.Cookies("login")
  45. if имя == "svi" {
  46. return кнт.SendString(strBotList)
  47. }
  48. стрРез := сам.рендер.Получ()
  49. return кнт.SendString(стрРез)
  50. }
  51. type LoginRequest struct {
  52. Логин_ string `form:"login"`
  53. Пароль_ string `form:"password"`
  54. КонтрольноеСлово_ string `form:"control_word"`
  55. }
  56. //go:embed block_list_bot.html
  57. var стрБлокСписБотов string
  58. // Вызывается при попытке войти
  59. func (сам *СтраницаЛогин) постЛогин(кнт *fiber.Ctx) error {
  60. запрос := new(LoginRequest)
  61. if err := кнт.BodyParser(запрос); err != nil {
  62. return кнт.SendString(стрЛогин)
  63. }
  64. сам.лог.Info("СтраницаЛогин.логин(): : %#+v\n", *запрос)
  65. if запрос.Логин_ == "" || запрос.Пароль_ == "" {
  66. return кнт.SendString(стрЛогин)
  67. }
  68. if запрос.Логин_ != "svi" || запрос.Пароль_ != "Lera_07091978" {
  69. return кнт.SendString(стрЛогин)
  70. }
  71. кнт.Cookie(&fiber.Cookie{
  72. Name: "login",
  73. Value: "svi",
  74. Expires: time.Now().Add(24 * time.Hour),
  75. HTTPOnly: true,
  76. })
  77. return кнт.SendString(стрБлокСписБотов)
  78. }
  79. /*
  80. // Проверка на куки
  81. func (сам *СтраницаЛогин) кукиПроверить(кнт *fiber.Ctx) error {
  82. сам.лог.Debug("СтраницаЛогин.кукиПроверить()\n")
  83. имя := кнт.Cookies("login")
  84. if имя != "svi" {
  85. return кнт.Redirect("/gui/login-show", http.StatusSeeOther)
  86. }
  87. return кнт.Next()
  88. }
  89. */