summaryrefslogtreecommitdiff
path: root/internal/web/base.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/web/base.go')
-rw-r--r--internal/web/base.go67
1 files changed, 56 insertions, 11 deletions
diff --git a/internal/web/base.go b/internal/web/base.go
index a8d99619c..8e7e539f6 100644
--- a/internal/web/base.go
+++ b/internal/web/base.go
@@ -27,7 +27,6 @@ import (
"strings"
"github.com/gin-gonic/gin"
- "github.com/sirupsen/logrus"
"github.com/superseriousbusiness/gotosocial/internal/api"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
@@ -104,14 +103,10 @@ func New(processor processing.Processor) (api.ClientModule, error) {
}
func (m *Module) baseHandler(c *gin.Context) {
- l := logrus.WithField("func", "BaseGETHandler")
- l.Trace("serving index html")
-
host := config.GetHost()
instance, err := m.processor.InstanceGet(c.Request.Context(), host)
if err != nil {
- l.Debugf("error getting instance from processor: %s", err)
- c.JSON(http.StatusInternalServerError, gin.H{"error": "internal server error"})
+ api.ErrorHandler(c, gtserror.NewErrorInternalError(err), m.processor.InstanceGet)
return
}
@@ -120,16 +115,66 @@ func (m *Module) baseHandler(c *gin.Context) {
})
}
+// TODO: abstract the {admin, user}panel handlers in some way
+func (m *Module) AdminPanelHandler(c *gin.Context) {
+ host := config.GetHost()
+ instance, err := m.processor.InstanceGet(c.Request.Context(), host)
+ if err != nil {
+ api.ErrorHandler(c, gtserror.NewErrorInternalError(err), m.processor.InstanceGet)
+ return
+ }
+
+ c.HTML(http.StatusOK, "frontend.tmpl", gin.H{
+ "instance": instance,
+ "stylesheets": []string{
+ "/assets/Fork-Awesome/css/fork-awesome.min.css",
+ "/assets/dist/panels-admin-style.css",
+ },
+ "javascript": []string{
+ "/assets/dist/bundle.js",
+ "/assets/dist/admin-panel.js",
+ },
+ })
+}
+
+func (m *Module) UserPanelHandler(c *gin.Context) {
+ host := config.GetHost()
+ instance, err := m.processor.InstanceGet(c.Request.Context(), host)
+ if err != nil {
+ api.ErrorHandler(c, gtserror.NewErrorInternalError(err), m.processor.InstanceGet)
+ return
+ }
+
+ c.HTML(http.StatusOK, "frontend.tmpl", gin.H{
+ "instance": instance,
+ "stylesheets": []string{
+ "/assets/Fork-Awesome/css/fork-awesome.min.css",
+ "/assets/dist/_colors.css",
+ "/assets/dist/base.css",
+ "/assets/dist/panels-user-style.css",
+ },
+ "javascript": []string{
+ "/assets/dist/bundle.js",
+ "/assets/dist/user-panel.js",
+ },
+ })
+}
+
// Route satisfies the RESTAPIModule interface
func (m *Module) Route(s router.Router) error {
// serve static files from assets dir at /assets
s.AttachStaticFS("/assets", fileSystem{http.Dir(m.assetsPath)})
- // serve admin panel from within assets dir at /admin/
- // and redirect /admin to /admin/
- s.AttachStaticFS("/admin/", fileSystem{http.Dir(m.adminPath)})
- s.AttachHandler(http.MethodGet, "/admin", func(c *gin.Context) {
- c.Redirect(http.StatusMovedPermanently, "/admin/")
+ s.AttachHandler(http.MethodGet, "/admin", m.AdminPanelHandler)
+ // redirect /admin/ to /admin
+ s.AttachHandler(http.MethodGet, "/admin/", func(c *gin.Context) {
+ c.Redirect(http.StatusMovedPermanently, "/admin")
+ })
+
+ s.AttachHandler(http.MethodGet, "/user", m.UserPanelHandler)
+ // redirect /settings/ to /settings
+ s.AttachHandler(http.MethodGet, "/user/", func(c *gin.Context) {
+ c.Redirect(http.StatusMovedPermanently, "/user")
})
// serve front-page