func (routeDir *RouteDirectory) Register(router *httptreemux.TreeMux) { var keys []DirectoryKey routes := routeDir.Routes for k := range routes { keys = append(keys, k) } for _, k := range keys { route := routes[k] if route.Visible { handler := route.Handler if route.CheckPermissions { permissionGate := NewPermissionGate(k.Ressource, k.Method, routeDir.accountInter, routeDir.render, route.Handler) handler = permissionGate.Handler } route.EffectiveHandler = handler routes[k] = route router.Handle(route.Method, route.Path, httptreemux.HandlerFunc(handler)) } } }
func InitializeBlog(router *httptreemux.TreeMux) { // For index router.GET("/", indexHandler) router.GET("/:slug/", postHandler) router.GET("/page/:number/", indexHandler) // For author router.GET("/author/:slug/", authorHandler) router.GET("/author/:slug/:function/", authorHandler) router.GET("/author/:slug/:function/:number/", authorHandler) // For tag router.GET("/tag/:slug/", tagHandler) router.GET("/tag/:slug/:function/", tagHandler) router.GET("/tag/:slug/:function/:number/", tagHandler) // For serving asset files router.GET("/assets/*filepath", assetsHandler) router.GET("/images/*filepath", imagesHandler) router.GET("/content/images/*filepath", imagesHandler) // This is here to keep compatibility with Ghost router.GET("/public/*filepath", publicHandler) }
func InitializeAdmin(router *httptreemux.TreeMux) { // For admin panel router.GET("/admin/", adminHandler) router.GET("/admin/login/", getLoginHandler) router.POST("/admin/login/", postLoginHandler) router.GET("/admin/register/", getRegistrationHandler) router.POST("/admin/register/", postRegistrationHandler) router.GET("/admin/logout/", logoutHandler) router.GET("/admin/*filepath", adminFileHandler) // For admin API (no trailing slash) // Posts router.GET("/admin/api/posts/:number", apiPostsHandler) // Post router.GET("/admin/api/post/:id", getApiPostHandler) router.POST("/admin/api/post", postApiPostHandler) router.PATCH("/admin/api/post", patchApiPostHandler) router.DELETE("/admin/api/post/:id", deleteApiPostHandler) // Upload router.POST("/admin/api/upload", apiUploadHandler) // Images router.GET("/admin/api/images/:number", apiImagesHandler) router.DELETE("/admin/api/image", deleteApiImageHandler) // Blog router.GET("/admin/api/blog", getApiBlogHandler) router.PATCH("/admin/api/blog", patchApiBlogHandler) // User router.GET("/admin/api/user/:id", getApiUserHandler) router.PATCH("/admin/api/user", patchApiUserHandler) // User id router.GET("/admin/api/userid", getApiUserIdHandler) }
func InitializePages(router *httptreemux.TreeMux) { // For serving standalone projects or pages saved in in content/pages router.GET("/pages/*filepath", pagesHandler) }