summary refs log tree commit diff stats
path: root/main.go
blob: ef20704723b2618bd5fa8c9bf7911236af4fb464 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main

import (
	"embed"
	"html/template"
	"net/http"
	"os"

	"github.com/ckrinitsin/shopping-list/authenticate"
	"github.com/ckrinitsin/shopping-list/handlers"
	"github.com/ckrinitsin/shopping-list/models"
	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-gonic/gin"
)

//go:embed templates/*
var templatesFS embed.FS

func main() {
	r := gin.Default()

	models.ConnectDatabase()

	tmpl := template.Must(template.ParseFS(templatesFS, "templates/*"))
	r.SetHTMLTemplate(tmpl)

	store := cookie.NewStore([]byte(os.Getenv("SECRET")))
	r.Use(sessions.Sessions("session", store))

	r.GET("/health", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"health-check": "passed",
		})
	})

	r.POST("/login", authenticate.LoginPOST)
	r.GET("/login", authenticate.LoginGET)
	r.POST("/register", authenticate.RegisterPOST)
	r.GET("/register", authenticate.RegisterGET)
	r.POST("/logout", authenticate.Logout)

	r.GET("/", authenticate.CheckAuth, shopping_list.LoadElements)
	r.POST("/create", authenticate.CheckAuth, shopping_list.CreateEntry)
	r.POST("/delete", authenticate.CheckAuth, shopping_list.DeleteEntries)
	r.POST("/toggle", authenticate.CheckAuth, shopping_list.ToggleEntry)

	r.Run()
}