Testing out the settings page

This commit is contained in:
VnPower 2023-06-20 21:21:27 +07:00
parent bfeb243f6c
commit 8e0bfc327f
Signed by: vnpower
GPG key ID: 881DE3DEB966106C
6 changed files with 86 additions and 78 deletions

1
.gitignore vendored
View file

@ -3,3 +3,4 @@
config.yml
tmp/
.air.toml
/.dir-locals.el

10
configs/session.go Normal file
View file

@ -0,0 +1,10 @@
package configs
import "github.com/gofiber/fiber/v2/middleware/session"
var Store *session.Store
func SetupStorage() {
Store = session.New()
Store.RegisterType("")
}

12
main.go
View file

@ -6,13 +6,10 @@ import (
"pixivfe/handler"
"pixivfe/views"
"strings"
"time"
"github.com/goccy/go-json"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cache"
"github.com/gofiber/fiber/v2/middleware/csrf"
// "github.com/gofiber/fiber/v2/middleware/helmet"
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/gofiber/fiber/v2/utils"
"github.com/gofiber/template/jet/v2"
@ -42,14 +39,6 @@ func setupRouter() *fiber.App {
},
},
))
// server.Use(helmet.New())
server.Use(csrf.New(csrf.Config{
KeyLookup: "header:X-Csrf-Token", // string in the form of '<source>:<key>' that is used to extract token from the request
CookieName: "my_csrf_", // name of the session cookie
CookieSameSite: "Strict", // indicates if CSRF cookie is requested by SameSite
Expiration: 3 * time.Hour, // expiration is the duration before CSRF token will expire
KeyGenerator: utils.UUID, // creates a new CSRF token
}))
// Static files
server.Static("/favicon.ico", "./template/favicon.ico")
@ -67,6 +56,7 @@ func setupRouter() *fiber.App {
func main() {
err := configs.ParseConfig()
configs.SetupStorage()
if err != nil {
panic(err)

View file

@ -52,7 +52,7 @@
<a href="#" class="navbar-button">
<img src="/assets/search.png" alt="Search" width="30" height="30" />
</a>
<a href="#" class="navbar-button">
<a href="/settings" class="navbar-button">
<img src="/assets/settings.png" alt="Settings" width="30" height="30" />
</a>
</li>

View file

@ -1,68 +1,40 @@
<div class="container">
<h2>Settings</h2>
<form action="/settings" method="post">
<fieldset class="settings-fieldset">
<legend>Proxy server {{ Settings.Proxy }}</legend>
<input
type="radio"
name="image-proxy-server"
id="image-proxy-server"
value="i.pixiv.cat"
/>
<label for="image-proxy-server">i.pixiv.cat</label>
<br />
<input
type="radio"
name="image-proxy-server"
id="image-proxy-server"
value="px2.rainchan.win"
/>
<label for="image-proxy-server">px2.rainchan.win</label>
<br />
<input
type="radio"
name="image-proxy-server"
id="image-proxy-server"
value="px3.rainchan.win"
/>
<label for="image-proxy-server">px3.rainchan.win</label>
<br />
<input
type="radio"
name="image-proxy-server"
id="image-proxy-server"
value="px.s.rainchan.win"
/>
<label for="image-proxy-server">px.s.rainchan.win</label>
<br />
<input
type="radio"
name="image-proxy-server"
id="image-proxy-server"
value="sex.nyan.xyz"
/>
<label for="image-proxy-server">___.nyan.xyz</label>
<br />
<input
type="radio"
name="image-proxy-server"
id="image-proxy-server"
value="pximg.wjghj.cn"
/>
<label for="image-proxy-server">pximg.wjghj.cn</label>
<br />
<br />
<label for="image-proxy-server">Custom image proxy server</label>
<br />
<input
type="text"
name="image-proxy-server"
id="image-proxy-server"
placeholder="Paste the address here..."
autocomplete="off"
/>
<br />
<input type="submit" value="Apply" />
</fieldset>
</form>
<h2>Settings</h2>
<form action="/setting" method="post">
<fieldset class="settings-fieldset">
<legend>Custom token</legend>
<input type="text" name="token" autocomplete="off" />
<input type="submit" />
</fieldset>
</form>
<form action="/setting" method="post">
<fieldset class="settings-fieldset">
<legend>Proxy server</legend>
<input type="radio" name="image-proxy-server" id="image-proxy-server" value="i.pixiv.cat" />
<label for="image-proxy-server">i.pixiv.cat</label>
<br />
<input type="radio" name="image-proxy-server" id="image-proxy-server" value="px2.rainchan.win" />
<label for="image-proxy-server">px2.rainchan.win</label>
<br />
<input type="radio" name="image-proxy-server" id="image-proxy-server" value="px3.rainchan.win" />
<label for="image-proxy-server">px3.rainchan.win</label>
<br />
<input type="radio" name="image-proxy-server" id="image-proxy-server" value="px.s.rainchan.win" />
<label for="image-proxy-server">px.s.rainchan.win</label>
<br />
<input type="radio" name="image-proxy-server" id="image-proxy-server" value="sex.nyan.xyz" />
<label for="image-proxy-server">___.nyan.xyz</label>
<br />
<input type="radio" name="image-proxy-server" id="image-proxy-server" value="pximg.wjghj.cn" />
<label for="image-proxy-server">pximg.wjghj.cn</label>
<br />
<br />
<label for="image-proxy-server">Custom image proxy server</label>
<br />
<input type="text" name="image-proxy-server" id="image-proxy-server" placeholder="Paste the address here..."
autocomplete="off" />
<br />
<input type="submit" value="Apply" />
</fieldset>
</form>
</div>

View file

@ -52,6 +52,16 @@ func index_page(c *fiber.Ctx) error {
// "Spotlights": spotlight,
// "Newest": newest,
// })
sess, err := configs.Store.Get(c)
if err != nil {
panic(err)
}
token := sess.Get("token")
if token != nil {
println(token.(string))
}
return c.Render("temp", fiber.Map{"Title": "Landing"})
}
@ -165,6 +175,28 @@ func discovery_page(c *fiber.Ctx) error {
return c.Render("discovery", fiber.Map{"Title": "Discovery", "Artworks": artworks})
}
func settings_page(c *fiber.Ctx) error {
return c.Render("settings", fiber.Map{})
}
func settings_handler(c *fiber.Ctx) error {
sess, err := configs.Store.Get(c)
if err != nil {
panic(err)
}
token := c.FormValue("token")
if token != "" {
sess.Set("token", token)
if err := sess.Save(); err != nil {
panic(err)
}
return c.Redirect("/settings/", http.StatusAccepted)
}
return c.Redirect("/settings/", http.StatusNoContent)
}
// func not_found_page(c *fiber.Ctx) {
// return c.Render(http.StatusNotFound, "error.html", fiber.Map{
// "Title": "Not found",
@ -204,6 +236,9 @@ func SetupRoutes(r *fiber.App) {
r.Get("discovery", discovery_page)
r.Post("tags", search)
r.Get("settings", settings_page)
r.Post("setting", settings_handler)
// 404 page
// r.NoRoute(not_found_page)
}