register.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package routes
  2. import (
  3. "io/fs"
  4. "git.aetherial.dev/aeth/keiji/pkg/auth"
  5. "git.aetherial.dev/aeth/keiji/pkg/controller"
  6. "git.aetherial.dev/aeth/keiji/pkg/storage"
  7. "github.com/gin-gonic/gin"
  8. )
  9. func Register(e *gin.Engine, domain string, database storage.DocumentIO, files fs.FS, authSrc auth.Source) {
  10. c := controller.NewController(domain, database, files, authSrc)
  11. web := e.Group("")
  12. web.GET("/", c.ServeHome)
  13. web.GET("/blog", c.ServeBlog)
  14. web.GET("/digital", c.ServeDigitalArt)
  15. web.GET("/creative", c.ServeCreative)
  16. web.GET("/writing/:id", c.ServePost)
  17. web.GET("/login", c.ServeLogin)
  18. web.POST("/login", controller.LoginRateLimit(), controller.SameOrigin, c.Auth)
  19. cdn := e.Group("/api/v1")
  20. cdn.GET("/images/:file", c.ServeImage)
  21. cdn.GET("/cdn/:file", c.ServeGeneric)
  22. cdn.GET("assets/:file", c.ServeAsset)
  23. priv := e.Group("/admin")
  24. priv.Use(c.IsAuthenticated, controller.SameOrigin)
  25. priv.GET("/upload", c.ServeFileUpload)
  26. priv.POST("/upload", c.SaveFile)
  27. priv.POST("/asset", c.AddAsset)
  28. priv.GET("/panel", c.AdminPanel)
  29. priv.GET("/digital", c.ListDigitalArt)
  30. priv.GET("/digital/:id", c.EditDigitalArt)
  31. priv.POST("/digital/:id", c.UpdateDigitalArt)
  32. priv.DELETE("/digital/:id", c.RemoveDigitalArt)
  33. priv.POST("/panel", c.AddAdminTableEntry)
  34. priv.POST("/menu", c.AddMenuItem)
  35. priv.POST("/navbar", c.AddNavbarItem)
  36. priv.POST("/images/upload", c.SaveFile)
  37. priv.GET("/posts/:id", c.GetBlogPostEditor)
  38. priv.GET("/options/:id", c.PostOptions)
  39. priv.POST("/posts", c.MakeBlogPost)
  40. priv.GET("/posts/all", c.ServeBlogDirectory)
  41. priv.GET("/posts", c.ServeNewBlogPage)
  42. priv.PATCH("/posts", c.UpdateBlogPost)
  43. priv.DELETE("/posts/:id", c.DeleteDocument)
  44. priv.DELETE("/navbar/:item_name", c.RemoveNavbarItem)
  45. priv.GET("/navbar/new", c.ServeNewNavbarItem)
  46. priv.GET("/navbar/options/:id", c.NavbarOptions)
  47. priv.GET("/navbar/all", c.ServeNavbarModify)
  48. }