Blob: main.go

Blob id: c7caedf60f000c6710ee5f22e0e8a03b5ddcff0e

Size: 2.1 KB

  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
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
package main

import (
	"uutissivusto/internal/auth"
	"uutissivusto/internal/database"

	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-gonic/gin"
)

func main() {
	db, err := database.Connect()

	if err != nil {
		panic(err.Error())
	}
	defer db.Close()

	router := gin.New()
	router.Use(gin.Logger())
	router.Use(gin.Recovery())
	router.Static("/static", "web/static/")
	router.LoadHTMLGlob("web/templates/*")

	// for auth middleware
	store := cookie.NewStore([]byte("salaisuus"))
	router.Use(sessions.Sessions("auth", store))

	router.GET("/", func(c *gin.Context) {
		articles, err := database.GetArticles(db)
		if err != nil {
			c.JSON(500, gin.H{"error": err.Error()})
			return
		}

		categories, err := database.GetCategories(db)

		if err != nil {
			c.JSON(500, gin.H{"error": err.Error()})
			return
		}

		c.HTML(200, "index.html", gin.H{
			"Articles":   articles,
			"Categories": categories,
		})
	})

	router.GET("/:category", func(c *gin.Context) {
		category := c.Param("category")
		articles, err := database.GetCategoryArticles(db, category)

		if err != nil {
			c.JSON(500, gin.H{"error": err.Error()})
			return
		}

		categories, err := database.GetCategories(db)

		if err != nil {
			c.JSON(500, gin.H{"error": err.Error()})
			return
		}

		c.HTML(200, "index.html", gin.H{
			"Articles":   articles,
			"Categories": categories,
		})
	})

	router.GET("/artikkeli/:uri", func(c *gin.Context) {
		articleUri := c.Param("uri")
		article, err := database.GetArticle(db, articleUri)

		if err != nil {
			c.JSON(500, gin.H{"error": err.Error()})
			return
		}

		categories, err := database.GetCategories(db)

		if err != nil {
			c.JSON(500, gin.H{"error": err.Error()})
			return
		}

		c.HTML(200, "article.html", gin.H{
			"Article":    article,
			"Categories": categories,
		})
	})

	router.GET("/kirjaudu", auth.Login)
	router.POST("/kirjaudu", auth.LoginPost)
	router.GET("/logout", auth.Logout)

	authorized := router.Group("/admin")

	authorized.Use(auth.AuthRequired)

	authorized.GET("/luo", func(c *gin.Context) {
		c.JSON(200, gin.H{"msg": "mirri"})
	})
	router.Run(":8080")

}