From 143bdb759680ba225f2716357049241cb91970f2 Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 16 Mar 2023 08:08:52 +0800 Subject: [PATCH] chore: update echo response --- server/auth.go | 18 ++++++++++++------ server/shortcut.go | 24 ++++-------------------- server/system.go | 15 ++------------- server/workspace.go | 30 +++++------------------------- server/workspace_user.go | 18 +++--------------- 5 files changed, 26 insertions(+), 79 deletions(-) diff --git a/server/auth.go b/server/auth.go index 916824d..651309a 100644 --- a/server/auth.go +++ b/server/auth.go @@ -66,9 +66,19 @@ func (s *Server) registerAuthRoutes(g *echo.Group) { if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to generate password hash").SetInternal(err) } - userCreate.PasswordHash = string(passwordHash) + existingUsers, err := s.Store.FindUserList(ctx, &api.UserFind{}) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, "Failed to find existing users").SetInternal(err) + } + // The first user to sign up is an admin by default. + if len(existingUsers) == 0 { + userCreate.Role = api.RoleAdmin + } else { + userCreate.Role = api.RoleUser + } + user, err := s.Store.CreateUser(ctx, userCreate) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to create user").SetInternal(err) @@ -79,11 +89,7 @@ func (s *Server) registerAuthRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to set signup session").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(user)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode created user response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(user)) }) g.POST("/auth/logout", func(c echo.Context) error { diff --git a/server/shortcut.go b/server/shortcut.go index 856af9b..a4c134b 100644 --- a/server/shortcut.go +++ b/server/shortcut.go @@ -46,11 +46,7 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose shortcut").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(shortcut)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode shortcut response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(shortcut)) }) g.PATCH("/shortcut/:shortcutId", func(c echo.Context) error { @@ -99,11 +95,7 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose shortcut").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(shortcut)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode shortcut response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(shortcut)) }) g.GET("/shortcut", func(c echo.Context) error { @@ -150,11 +142,7 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { } } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(list)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode shortcut list response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(list)) }) g.GET("/shortcut/:id", func(c echo.Context) error { @@ -176,11 +164,7 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose shortcut").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(shortcut)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode shortcut response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(shortcut)) }) g.DELETE("/shortcut/:id", func(c echo.Context) error { diff --git a/server/system.go b/server/system.go index e760159..92ea60a 100644 --- a/server/system.go +++ b/server/system.go @@ -1,7 +1,6 @@ package server import ( - "encoding/json" "net/http" "github.com/boojack/corgi/api" @@ -11,13 +10,7 @@ import ( func (s *Server) registerSystemRoutes(g *echo.Group) { g.GET("/ping", func(c echo.Context) error { - data := s.Profile - - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(data)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose system profile").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(s.Profile)) }) g.GET("/status", func(c echo.Context) error { @@ -25,10 +18,6 @@ func (s *Server) registerSystemRoutes(g *echo.Group) { Profile: s.Profile, } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(systemStatus)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode system status response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(systemStatus)) }) } diff --git a/server/workspace.go b/server/workspace.go index c577787..73107ba 100644 --- a/server/workspace.go +++ b/server/workspace.go @@ -48,11 +48,7 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user list").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspace)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(workspace)) }) g.GET("/workspace", func(c echo.Context) error { @@ -76,11 +72,7 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) { } } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspaceList)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace list response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(workspaceList)) }) g.GET("/workspace/:id", func(c echo.Context) error { @@ -101,11 +93,7 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user list").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspace)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(workspace)) }) g.GET("/workspace/:workspaceName/shortcut/:shortcutName", func(c echo.Context) error { @@ -162,11 +150,7 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) { } } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(shortcut)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode shortcut response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(shortcut)) }) g.PATCH("/workspace/:id", func(c echo.Context) error { @@ -210,11 +194,7 @@ func (s *Server) registerWorkspaceRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user list").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspace)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(workspace)) }) g.DELETE("/workspace/:id", func(c echo.Context) error { diff --git a/server/workspace_user.go b/server/workspace_user.go index 059f40f..92fea86 100644 --- a/server/workspace_user.go +++ b/server/workspace_user.go @@ -51,11 +51,7 @@ func (s *Server) registerWorkspaceUserRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspaceUser)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace user response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(workspaceUser)) }) g.GET("/workspace/:id/user", func(c echo.Context) error { @@ -78,11 +74,7 @@ func (s *Server) registerWorkspaceUserRoutes(g *echo.Group) { } } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspaceUserList)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace user list response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(workspaceUserList)) }) g.GET("/workspace/:workspaceId/user/:userId", func(c echo.Context) error { @@ -108,11 +100,7 @@ func (s *Server) registerWorkspaceUserRoutes(g *echo.Group) { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to compose workspace user").SetInternal(err) } - c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8) - if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(workspaceUser)); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode workspace user response").SetInternal(err) - } - return nil + return c.JSON(http.StatusOK, composeResponse(workspaceUser)) }) g.DELETE("/workspace/:workspaceId/user/:userId", func(c echo.Context) error {