mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
Settings page
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user