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}