| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // package web_api -- веб-сервер для API
- package web_api
- import (
- "fmt"
- "log"
- "time"
- "github.com/gofiber/fiber/v2"
- "wartank/pkg/types"
- )
- // ВебАпи -- веб-сервер для API
- type ВебАпи struct {
- серв types.ИСервер
- файбер fiber.App
- }
- // НовВебАпи -- возвращает новый веб-сервер для API
- func НовВебАпи(вебСервер types.ИВебСервер) (*ВебАпи, error) {
- if вебСервер == nil {
- return nil, fmt.Errorf("НовВебАпи(): ИВебСервер==nil")
- }
- сам := &ВебАпи{
- серв: вебСервер.Сервер(),
- файбер: *вебСервер.Файбер(),
- }
- сам.файбер.Post("/api/login", сам.логин)
- return сам, nil
- }
- type LoginRequest struct {
- Логин_ string `json:"login" form:"login"`
- Пароль_ string `json:"password" form:"password"`
- КонтрольноеСлово_ string `json:"control_word" form:"control_word"`
- }
- // Вызывается при попытке войти
- func (сам *ВебАпи) логин(кнт *fiber.Ctx) error {
- запрос := new(LoginRequest)
- if err := кнт.BodyParser(запрос); err != nil {
- return кнт.JSON(fiber.Map{
- "status": "ошибка в разборе формы",
- })
- }
- log.Printf("ВебАпи.логин(): : %#+v\n", *запрос)
- if запрос.Логин_ == "" || запрос.Пароль_ == "" {
- return кнт.JSON(fiber.Map{
- "status": "пустой логин/пароль",
- })
- }
- if запрос.Логин_ != "svi" || запрос.Пароль_ != "Lera_07091978" {
- return кнт.JSON(fiber.Map{
- "status": "ошибка логина/пароля",
- })
- }
- кнт.Cookie(&fiber.Cookie{
- Name: "login",
- Value: "svi",
- Expires: time.Now().Add(24 * time.Hour),
- HTTPOnly: true,
- })
- return кнт.Redirect("/gui/list_bot")
- }
|