Forráskód Böngészése

SVI Переделка под WUI

SVI 11 hónapja
szülő
commit
11b3da9a37

+ 23 - 0
app/lev3/serv_web/web_gui/block_login.html

@@ -0,0 +1,23 @@
+<title>WarTank - логин</title>
+<h1>Логин на сервер</h1>
+
+<!-- Форма логина -->
+<form class="container border rounded">
+    <div class="row p-3">
+        <label for="login" class="col-2 form-label text-right">Логин:</label>
+        <input type="text" id="login" name="login" id="login" class="col form-control" placeholder="admin"><br><br>
+    </div>
+
+    <div class="row p-3">
+        <label for="password" class="col-2 form-label">Пароль:</label>
+        <input type="password" id="password" name="password" class="col form-control text-right"
+            placeholder="12345"><br><br>
+    </div>
+
+    <div class="row p-3">
+        <label class="col">:</label>
+        <input type="submit" class="col-2 btn btn-primary" hx-post="/gui/login/make" hx-target="#main" value="Вход">
+    </div>
+</form>
+
+<p>{.err}</p>

+ 3 - 2
app/lev3/serv_web/web_gui/index.tmpl.html

@@ -22,7 +22,8 @@
                     </div>
                     <div class="col">
                         <a class="btn btn-primary" href="/">Главная</a>
-                        <a class="btn btn-primary" hx-post="/gui/bot" hx-target="#main">Список ботов</a>
+                        <a class="btn btn-primary" hx-post="/gui/bot/list_show" hx-target="#main">Список ботов</a>
+                        {.btn_lst_bot}
                         <a class="btn btn-primary" hx-post="/monolit" hx-target="body">Монолит</a>
                     </div>
                 </div>
@@ -34,7 +35,7 @@
             </div>
             <br>
         </div>
-        <div id="main" hx-post="/gui/login/show" hx-trigger="load">
+        <div id="main" hx-post="/gui/login_show" hx-trigger="load">
             {.main}
         </div>
         <div id="foother" class="container-fluid border rounded text-info bg-dark">

+ 6 - 4
app/lev3/serv_web/web_gui/page_bot_add/page_bot_add.go

@@ -34,8 +34,8 @@ func НовСтраницаБотовДобавить(конт IKernelCtx) *Ст
 		рендер: web_render.НовВебРендер(стрБотДобавить),
 	}
 	файбер := конт.Get("fiberApp").Val().(*fiber.App)
-	файбер.Post("/gui/bot/add/show", сам.кукиПроверить, сам.гетБотНов)
-	файбер.Post("/gui/bot/add/make", сам.кукиПроверить, сам.постДобавитьБота)
+	файбер.Post("/gui/bot/add/show", сам.гетБотНов)
+	файбер.Post("/gui/bot/add/make", сам.постДобавитьБота)
 	return сам
 }
 
@@ -71,12 +71,14 @@ func (сам *СтраницаБотаДобавить) гетБотНов(кн
 	return кнт.SendString(стрРез)
 }
 
+/*
 // Проверка на куки
-func (сам *СтраницаБотаДобавить) кукиПроверить(кнт *fiber.Ctx) error {
+func (сам *СтраницаБотаДобавить) _кукиПроверить(кнт *fiber.Ctx) error {
 	сам.лог.Debug("СтраницаБотаДобавить.кукиПроверить()\n")
 	имя := кнт.Cookies("login")
 	if имя != "svi" {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		return кнт.Redirect("/gui/login-show", http.StatusSeeOther)
 	}
 	return кнт.Next()
 }
+*/

+ 5 - 3
app/lev3/serv_web/web_gui/page_bot_list/page_bot_list.go

@@ -4,7 +4,7 @@ package page_bot_list
 import (
 	_ "embed"
 	"fmt"
-	"net/http"
+	// "net/http"
 	"strings"
 
 	"github.com/gofiber/fiber/v2"
@@ -36,7 +36,7 @@ func НовСтраницаСписокБотов(конт IKernelCtx) *Стра
 		рендер: web_render.НовВебРендер(стрСписок),
 	}
 	файбер := конт.Get("fiberApp").Val().(*fiber.App)
-	файбер.Post("/gui/bot/list/show", сам.кукиПроверить, сам.получСписокБотов)
+	файбер.Post("/gui/bot/list_show", сам.получСписокБотов)
 	return сам
 }
 
@@ -65,12 +65,14 @@ func (сам *СтраницаСписокБотов) получСписокБо
 	return кнт.SendString(стрРез)
 }
 
+/*
 // Проверка на куки
 func (сам *СтраницаСписокБотов) кукиПроверить(кнт *fiber.Ctx) error {
 	сам.лог.Debug("СтраницаСписокБотов.кукиПроверить()\n")
 	имя := кнт.Cookies("login")
 	if имя != "svi" {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		return кнт.Redirect("/gui/login-show", http.StatusSeeOther)
 	}
 	return кнт.Next()
 }
+*/

+ 4 - 2
app/lev3/serv_web/web_gui/page_bot_show/page_bot_show.go

@@ -36,7 +36,7 @@ func НовСтраницаБотПоказать(конт IKernelCtx) *Стра
 		рендер: web_render.НовВебРендер(стрБотПоказать),
 	}
 	файбер := конт.Get("fiberApp").Val().(*fiber.App)
-	файбер.Post("/gui/bot/:id/show", сам.кукиПроверить, сам.гетБотПоказ)
+	файбер.Post("/gui/bot/:id/show", сам.гетБотПоказ)
 	// файбер.Post("/gui/bot/add", сам.кукиПроверить, сам.постДобавитьБота)
 	return сам
 }
@@ -108,12 +108,14 @@ func (сам *СтраницаБотПоказать) гетБотПоказ(к
 	return кнт.SendString(стрРез)
 }
 
+/*
 // Проверка на куки
 func (сам *СтраницаБотПоказать) кукиПроверить(кнт *fiber.Ctx) error {
 	сам.лог.Debug("СтраницаБотПоказать.кукиПроверить()\n")
 	имя := кнт.Cookies("login")
 	if имя != "svi" {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		return кнт.Redirect("/gui/login-show", http.StatusSeeOther)
 	}
 	return кнт.Next()
 }
+*/

+ 6 - 0
app/lev3/serv_web/web_gui/page_login/block_list_bot.html

@@ -0,0 +1,6 @@
+<div id="main" hx-swap-oob="true">
+   <h1>Страница списка ботов вартанк</h1>
+   {.list_bot}
+   <br>
+   <a class="btn btn-primary" hx-post="/gui/bot/add/show" hx-target="#main">Добавить бота</a>
+</div>

+ 1 - 1
app/lev3/serv_web/web_gui/page_login/login.tmpl.html

@@ -15,7 +15,7 @@
 
     <div class="row p-3">
         <label class="col">:</label>
-        <input type="submit" class="col-2 btn btn-primary" hx-post="/gui/login/make" hx-target="#main" value="Вход">
+        <input type="submit" class="col-2 btn btn-primary" hx-post="/gui/login_make" hx-target="#main" value="Вход">
     </div>
 </form>
 

+ 14 - 9
app/lev3/serv_web/web_gui/page_login/page_login.go

@@ -3,7 +3,7 @@ package page_login
 
 import (
 	_ "embed"
-	"net/http"
+	// "net/http"
 	"time"
 
 	"github.com/gofiber/fiber/v2"
@@ -34,14 +34,14 @@ func НовСтраницаЛогин(конт IKernelCtx) *СтраницаЛо
 	}
 	сам.рендер.Доб("{.err}", "")
 	файбер := конт.Get("fiberApp").Val().(*fiber.App)
-	файбер.Post("/gui/login/show", сам.кукиПроверить, сам.получЛогин)
-	файбер.Post("/gui/login/make", сам.кукиПроверить, сам.постЛогин)
+	файбер.Post("/gui/login_show", сам.получЛогин)
+	файбер.Post("/gui/login_make", сам.постЛогин)
 	return сам
 }
 
 var (
 	strBotList = `
-	<div id="main" hx-post="/gui/bot/list/show" hx-trigger="load"  hx-swap-oob""></div>
+	<div id="main" hx-post="/gui/bot/list_show" hx-trigger="load"  hx-swap-oob""></div>
 	`
 )
 
@@ -63,19 +63,22 @@ type LoginRequest struct {
 	КонтрольноеСлово_ string `form:"control_word"`
 }
 
+//go:embed block_list_bot.html
+var стрБлокСписБотов string
+
 // Вызывается при попытке войти
 func (сам *СтраницаЛогин) постЛогин(кнт *fiber.Ctx) error {
 	запрос := new(LoginRequest)
 	if err := кнт.BodyParser(запрос); err != nil {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		return кнт.SendString(стрЛогин)
 	}
 	сам.лог.Info("СтраницаЛогин.логин(): : %#+v\n", *запрос)
 	if запрос.Логин_ == "" || запрос.Пароль_ == "" {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		return кнт.SendString(стрЛогин)
 	}
 
 	if запрос.Логин_ != "svi" || запрос.Пароль_ != "Lera_07091978" {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		return кнт.SendString(стрЛогин)
 	}
 	кнт.Cookie(&fiber.Cookie{
 		Name:     "login",
@@ -83,15 +86,17 @@ func (сам *СтраницаЛогин) постЛогин(кнт *fiber.Ctx)
 		Expires:  time.Now().Add(24 * time.Hour),
 		HTTPOnly: true,
 	})
-	return кнт.Redirect("/gui/bot/list", http.StatusSeeOther)
+	return кнт.SendString(стрБлокСписБотов)
 }
 
+/*
 // Проверка на куки
 func (сам *СтраницаЛогин) кукиПроверить(кнт *fiber.Ctx) error {
 	сам.лог.Debug("СтраницаЛогин.кукиПроверить()\n")
 	имя := кнт.Cookies("login")
 	if имя != "svi" {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		return кнт.Redirect("/gui/login-show", http.StatusSeeOther)
 	}
 	return кнт.Next()
 }
+*/

+ 33 - 6
app/lev3/serv_web/web_gui/web_gui.go

@@ -3,12 +3,15 @@ package web_gui
 
 import (
 	_ "embed"
-	"net/http"
+	// "net/http"
+	"strings"
 
 	"github.com/gofiber/fiber/v2"
 	. "gitp78su.ipnodns.ru/svi/kern"
 	. "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
 	. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
+	"gitp78su.ipnodns.ru/svi/kern/wui"
+	"gitp78su.ipnodns.ru/svi/kern/wui/wtypes"
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev3/serv_web/web_gui/page_bot_add"
@@ -19,8 +22,10 @@ import (
 
 // ВебГип -- веб-сервер для графики
 type ВебГуи struct {
-	прилож ИПриложение
-	лог    ILogBuf
+	прилож  ИПриложение
+	конт    IKernelCtx
+	лог     ILogBuf
+	кнпБоты wtypes.IWuiButton
 }
 
 // НовВебГуи -- возвращает новый веб-сервер для графики
@@ -29,10 +34,14 @@ func НовВебГуи(конт IKernelCtx) *ВебГуи {
 	Hassert(конт != nil, "НовВебГуи(): ИЯдроКонтекст==nil")
 	сам := &ВебГуи{
 		прилож: конт.Get("мод_сервер").Val().(ИПриложение),
+		конт:   конт,
 		лог:    лог,
 	}
+	сам.кнпБоты = wui.NewWuiButton("Список ботов", сам.ботыКлик)
+	сам.кнпБоты.Hx().Target().Set("#main")
 	файбер := конт.Get("fiberApp").Val().(*fiber.App)
-	файбер.Get("/", сам.кукиПроверить, сам.индекс)
+	// файбер.Get("/", сам.кукиПроверить) //, сам.индекс)
+	файбер.Get("/", сам.индекс)
 	_ = page_login.НовСтраницаЛогин(конт)
 	_ = page_bot_list.НовСтраницаСписокБотов(конт)
 	_ = page_bot_add.НовСтраницаБотовДобавить(конт)
@@ -40,6 +49,19 @@ func НовВебГуи(конт IKernelCtx) *ВебГуи {
 	return сам
 }
 
+var стрБлокБоты string
+
+//go:embed block_login.html
+var стрБлокЛогин string
+
+func (сам *ВебГуи) ботыКлик() string {
+	еслиЛогин := сам.конт.Get("еслиЛогин").Val().(bool)
+	if !еслиЛогин {
+		return стрБлокЛогин
+	}
+	return стрБлокБоты
+}
+
 //go:embed index.tmpl.html
 var стрГлавная string
 
@@ -49,15 +71,20 @@ func (сам *ВебГуи) индекс(кнт *fiber.Ctx) error {
 	кнт.Set("Content-type", "text/html; charset=utf8;-")
 	кнт.Set("Cache-Control", "no-cache")
 	_, _ = кнт.WriteString("\n\n")
-	return кнт.SendString(стрГлавная)
+	стрВых := strings.ReplaceAll(стрГлавная, "{.btn_lst_bot}", сам.кнпБоты.Html())
+	return кнт.SendString(стрВых)
 }
 
+/*
 // Проверка на куки
 func (сам *ВебГуи) кукиПроверить(кнт *fiber.Ctx) error {
 	сам.лог.Debug("ВебГуи.кукиПроверить()\n")
 	имя := кнт.Cookies("login")
 	if имя != "svi" {
-		return кнт.Redirect("/gui/login", http.StatusSeeOther)
+		сам.конт.Set("еслиЛогин", false, "Признак логина")
+	} else {
+		сам.конт.Set("еслиЛогин", true, "Признак логина")
 	}
 	return кнт.Next()
 }
+*/

+ 4 - 0
cmd/server/main.go

@@ -9,6 +9,7 @@
 package main
 
 import (
+	"gitp78su.ipnodns.ru/svi/kern"
 	. "gitp78su.ipnodns.ru/svi/kern"
 
 	"wartank/app/lev4/build"
@@ -23,6 +24,9 @@ func main() {
 	модВеб := GetModuleServHttp()
 	монолит.Add(модВеб)
 
+	модВуи := kern.GetModuleWui()
+	монолит.Add(модВуи)
+
 	сервер := build.НовМодСервер()
 	монолит.Add(сервер)
 	монолит.Run()