Settings page

This commit is contained in:
VnPower
2024-01-02 21:04:29 +07:00
parent fad6b2846e
commit 1183d8705c
4 changed files with 123 additions and 1 deletions
+40
View File
@@ -16,6 +16,14 @@ func SetupStorage() {
})
}
func saveSession(sess *session.Session) error {
if err := sess.Save(); err != nil {
return err
}
return nil
}
func GetImageProxy(c *fiber.Ctx) string {
sess, err := Store.Get(c)
if err != nil {
@@ -29,3 +37,35 @@ func GetImageProxy(c *fiber.Ctx) string {
return GlobalServerConfig.ProxyServer
}
func SetSessionValue(c *fiber.Ctx, name, value string) error {
sess, err := Store.Get(c)
if err != nil {
return err
}
sess.Set(name, value)
if err = saveSession(sess); err != nil {
log.Fatalln("Failed to save session storage!")
return err
}
return nil
}
func RemoveSessionValue(c *fiber.Ctx, name string) error {
sess, err := Store.Get(c)
if err != nil {
return err
}
sess.Delete(name)
if err = saveSession(sess); err != nil {
log.Fatalln("Failed to save session storage!")
return err
}
return nil
}
+12 -1
View File
@@ -60,9 +60,10 @@ func main() {
server.Use(logger.New(
logger.Config{
Format: "${pid} ${ip} | ${path}\n",
Format: "${time} ${ip} | ${path}\n",
},
))
server.Use(cache.New(
cache.Config{
// Next: func(c *fiber.Ctx) bool {
@@ -99,10 +100,20 @@ func main() {
server.Static("assets/", "./views/assets")
server.Static("/robots.txt", "./views/assets/robots.txt")
//
// Routes
//
server.Get("about", pages.AboutPage)
server.Get("newest", pages.NewestPage)
server.Get("discovery", pages.DiscoveryPage)
// Settings group
server.Get("login", pages.LoginPage)
settings := server.Group("settings")
settings.Get("/", pages.SettingsPage)
settings.Post("/:type", pages.SettingsPost)
log.Println("PixivFE is running.")
server.Listen(":8000")
}
+71
View File
@@ -0,0 +1,71 @@
package pages
import (
"errors"
session "codeberg.org/vnpower/pixivfe/v2/core/config"
"github.com/gofiber/fiber/v2"
)
func setToken(c *fiber.Ctx) error {
// Parse the value from the form
token := c.FormValue("token")
if token != "" {
if err := session.SetSessionValue(c, "Token", token); err != nil {
return err
}
return nil
}
return errors.New("You submitted an empty/invalid form.")
}
func setImageServer(c *fiber.Ctx) error {
// Parse the value from the form
token := c.FormValue("image-proxy")
if token != "" {
if err := session.SetSessionValue(c, "ImageProxy", token); err != nil {
return err
}
return nil
}
return errors.New("You submitted an empty/invalid form.")
}
func setLogout(c *fiber.Ctx) error {
session.RemoveSessionValue(c, "Token")
return nil
}
func LoginPage(c *fiber.Ctx) error {
return c.Render("pages/login", fiber.Map{})
}
func SettingsPage(c *fiber.Ctx) error {
return c.Render("pages/settings", fiber.Map{})
}
func SettingsPost(c *fiber.Ctx) error {
t := c.Params("type")
var err error
switch t {
case "image_server":
err = setImageServer(c)
case "token":
err = setToken(c)
case "logout":
err = setLogout(c)
default:
err = errors.New("No such methods available.")
}
if err != nil {
return err
}
c.Redirect("/settings")
return nil
}
Executable
BIN
View File
Binary file not shown.