web_gui.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // package web_gui -- веб-сервер для графики
  2. package web_gui
  3. import (
  4. "net/http"
  5. "github.com/gofiber/fiber/v2"
  6. . "wartank/app/lev0/types"
  7. "wartank/app/lev2/serv_web/web_gui/page_bot_add"
  8. "wartank/app/lev2/serv_web/web_gui/page_bot_list"
  9. "wartank/app/lev2/serv_web/web_gui/page_bot_show"
  10. "wartank/app/lev2/serv_web/web_gui/page_login"
  11. "wartank/pkg/kernel/kernel_log"
  12. . "wartank/pkg/kernel/kernel_types"
  13. )
  14. // ВебГип -- веб-сервер для графики
  15. type ВебГуи struct {
  16. серв ИПриложение
  17. лог *kernel_log.Логгер
  18. }
  19. // НовВебГуи -- возвращает новый веб-сервер для графики
  20. func НовВебГуи(конт ИЯдроКонтекст) *ВебГуи {
  21. лог := kernel_log.НовЛоггер("ВебГуи")
  22. лог.Паника(конт == nil, "НовВебГуи(): ИЯдроКонтекст==nil")
  23. сам := &ВебГуи{
  24. серв: конт.Получ("сервер").(ИПриложение),
  25. лог: лог,
  26. }
  27. файбер := конт.Получ("fiberApp").(*fiber.App)
  28. файбер.Get("/", сам.кукиПроверить, сам.индекс)
  29. _ = page_login.НовСтраницаЛогин(конт)
  30. _ = page_bot_list.НовСтраницаСписокБотов(конт)
  31. _ = page_bot_add.НовСтраницаБотовДобавить(конт)
  32. _ = page_bot_show.НовСтраницаБотПоказать(конт)
  33. return сам
  34. }
  35. // Возвращает индексную страницу
  36. func (сам *ВебГуи) индекс(кнт *fiber.Ctx) error {
  37. сам.лог.Отладка("ВебГуи.индекс()\n")
  38. имя := кнт.Cookies("login")
  39. if имя != "svi" {
  40. return кнт.Redirect("/gui/login", http.StatusSeeOther)
  41. }
  42. return кнт.Redirect("/gui/bot", http.StatusSeeOther)
  43. }
  44. // Проверка на куки
  45. func (сам *ВебГуи) кукиПроверить(кнт *fiber.Ctx) error {
  46. сам.лог.Отладка("ВебГуи.кукиПроверить()\n")
  47. имя := кнт.Cookies("login")
  48. if имя != "svi" {
  49. return кнт.Redirect("/gui/login", http.StatusSeeOther)
  50. }
  51. return кнт.Next()
  52. }