web_api.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // package web_api -- веб-сервер для API
  2. package web_api
  3. import (
  4. "fmt"
  5. "log"
  6. "time"
  7. "github.com/gofiber/fiber/v2"
  8. "wartank/pkg/types"
  9. )
  10. // ВебАпи -- веб-сервер для API
  11. type ВебАпи struct {
  12. серв types.ИСервер
  13. файбер fiber.App
  14. }
  15. // НовВебАпи -- возвращает новый веб-сервер для API
  16. func НовВебАпи(вебСервер types.ИВебСервер) (*ВебАпи, error) {
  17. if вебСервер == nil {
  18. return nil, fmt.Errorf("НовВебАпи(): ИВебСервер==nil")
  19. }
  20. сам := &ВебАпи{
  21. серв: вебСервер.Сервер(),
  22. файбер: *вебСервер.Файбер(),
  23. }
  24. сам.файбер.Post("/api/login", сам.логин)
  25. return сам, nil
  26. }
  27. type LoginRequest struct {
  28. Логин_ string `json:"login" form:"login"`
  29. Пароль_ string `json:"password" form:"password"`
  30. КонтрольноеСлово_ string `json:"control_word" form:"control_word"`
  31. }
  32. // Вызывается при попытке войти
  33. func (сам *ВебАпи) логин(кнт *fiber.Ctx) error {
  34. запрос := new(LoginRequest)
  35. if err := кнт.BodyParser(запрос); err != nil {
  36. return кнт.JSON(fiber.Map{
  37. "status": "ошибка в разборе формы",
  38. })
  39. }
  40. log.Printf("ВебАпи.логин(): : %#+v\n", *запрос)
  41. if запрос.Логин_ == "" || запрос.Пароль_ == "" {
  42. return кнт.JSON(fiber.Map{
  43. "status": "пустой логин/пароль",
  44. })
  45. }
  46. if запрос.Логин_ != "svi" || запрос.Пароль_ != "Lera_07091978" {
  47. return кнт.JSON(fiber.Map{
  48. "status": "ошибка логина/пароля",
  49. })
  50. }
  51. кнт.Cookie(&fiber.Cookie{
  52. Name: "login",
  53. Value: "svi",
  54. Expires: time.Now().Add(24 * time.Hour),
  55. HTTPOnly: true,
  56. })
  57. return кнт.Redirect("/gui/list_bot")
  58. }