Parent directory

auth_pages.go

878 bytes
 1package ytrssil
 2
 3import (
 4	"net/http"
 5
 6	"github.com/gin-gonic/gin"
 7
 8	"github.com/TheEdgeOfRage/ytrssil-api/pages"
 9)
10
11func (srv server) AuthPage(c *gin.Context) {
12	r := pages.TemplRenderer{
13		Ctx:       c.Request.Context(),
14		Component: pages.AuthPage(""),
15	}
16	c.Render(http.StatusOK, r)
17}
18
19func (srv server) HandleAuth(c *gin.Context) {
20	token := c.PostForm("token")
21
22	if token != srv.cfg.AuthToken {
23		r := pages.TemplRenderer{
24			Ctx:       c.Request.Context(),
25			Component: pages.AuthPage("Invalid token"),
26		}
27		c.Render(http.StatusBadRequest, r)
28		return
29	}
30
31	c.SetCookie(
32		"token",
33		token,
34		60*60*24*30,  // maxAge (30 days in seconds)
35		"/",          // path
36		"",           // domain (empty = current domain)
37		!srv.cfg.Dev, // secure (false = works on HTTP)
38		true,         // httpOnly (true = not accessible via JavaScript)
39	)
40	c.Redirect(http.StatusFound, "/")
41}