diff --git a/cmd/web-api/handlers/routes.go b/cmd/web-api/handlers/routes.go index 0107be2..c056074 100644 --- a/cmd/web-api/handlers/routes.go +++ b/cmd/web-api/handlers/routes.go @@ -1,6 +1,7 @@ package handlers import ( + "context" "log" "net/http" "os" @@ -10,9 +11,12 @@ import ( "geeks-accelerator/oss/saas-starter-kit/internal/platform/auth" "geeks-accelerator/oss/saas-starter-kit/internal/platform/web" "geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext" + "geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror" _ "geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror" + "geeks-accelerator/oss/saas-starter-kit/internal/project" _ "geeks-accelerator/oss/saas-starter-kit/internal/signup" "github.com/jmoiron/sqlx" + "github.com/pkg/errors" "gopkg.in/DataDog/dd-trace-go.v1/contrib/go-redis/redis" ) @@ -92,6 +96,8 @@ func API(shutdown chan os.Signal, log *log.Logger, env webcontext.Env, masterDB app.Handle("PATCH", "/v1/projects/archive", p.Archive, mid.AuthenticateHeader(authenticator), mid.HasRole(auth.RoleAdmin)) app.Handle("DELETE", "/v1/projects/:id", p.Delete, mid.AuthenticateHeader(authenticator), mid.HasRole(auth.RoleAdmin)) + app.Handle("GET", "/v1/examples/error-response", ExampleErrorResponse) + // Register swagger documentation. // TODO: Add authentication. Current authenticator requires an Authorization header // which breaks the browser experience. @@ -101,6 +107,36 @@ func API(shutdown chan os.Signal, log *log.Logger, env webcontext.Env, masterDB return app } +// ExampleErrorResponse returns example error messages. +func ExampleErrorResponse(ctx context.Context, w http.ResponseWriter, r *http.Request, params map[string]string) error { + v, err := webcontext.ContextValues(ctx) + if err != nil { + return err + } + + if qv := r.URL.Query().Get("test-validation-error"); qv != "" { + _, err := project.Create(ctx, auth.Claims{}, nil, project.ProjectCreateRequest{}, v.Now) + return web.RespondJsonError(ctx, w, err) + + } + + if qv := r.URL.Query().Get("test-web-error"); qv != "" { + terr := errors.New("Some random error") + terr = errors.WithMessage(terr, "Actual error message") + rerr := weberror.NewError(ctx, terr, http.StatusBadRequest).(*weberror.Error) + rerr.Message = "Test Web Error Message" + return web.RespondJsonError(ctx, w, rerr) + } + + if qv := r.URL.Query().Get("test-error"); qv != "" { + terr := errors.New("Test error") + terr = errors.WithMessage(terr, "Error message") + return web.RespondJsonError(ctx, w, terr) + } + + return nil +} + // Types godoc // @Summary List of types. // @Param data body weberror.FieldError false "Field Error" diff --git a/cmd/web-app/handlers/root.go b/cmd/web-app/handlers/root.go index 99d3d64..e4ea3e6 100644 --- a/cmd/web-app/handlers/root.go +++ b/cmd/web-app/handlers/root.go @@ -36,11 +36,7 @@ func (h *Root) Index(ctx context.Context, w http.ResponseWriter, r *http.Request // indexDashboard loads the dashboard for a user when they are authenticated. func (h *Root) indexDashboard(ctx context.Context, w http.ResponseWriter, r *http.Request, params map[string]string) error { - data := map[string]interface{}{ - "imgSizes": []int{100, 200, 300, 400, 500}, - } - - return h.Renderer.Render(ctx, w, r, TmplLayoutBase, "root-dashboard.gohtml", web.MIMETextHTMLCharsetUTF8, http.StatusOK, data) + return h.Renderer.Render(ctx, w, r, TmplLayoutBase, "root-dashboard.gohtml", web.MIMETextHTMLCharsetUTF8, http.StatusOK, nil) } // indexDefault loads the root index page when a user has no authentication. diff --git a/cmd/web-app/handlers/user.go b/cmd/web-app/handlers/user.go index 9817ac1..c91a3d3 100644 --- a/cmd/web-app/handlers/user.go +++ b/cmd/web-app/handlers/user.go @@ -22,7 +22,6 @@ import ( "github.com/gorilla/schema" "github.com/gorilla/sessions" "github.com/jmoiron/sqlx" - "github.com/pborman/uuid" "github.com/pkg/errors" ) @@ -824,10 +823,6 @@ func handleSessionToken(ctx context.Context, db *sqlx.DB, w http.ResponseWriter, sess := webcontext.ContextSession(ctx) - if sess.IsNew { - sess.ID = uuid.NewRandom().String() - } - sess.Options = &sessions.Options{ Path: "/", MaxAge: int(token.TTL.Seconds()), diff --git a/cmd/web-app/templates/content/user-view.gohtml b/cmd/web-app/templates/content/user-view.gohtml index 6f7d487..bc9ae4c 100644 --- a/cmd/web-app/templates/content/user-view.gohtml +++ b/cmd/web-app/templates/content/user-view.gohtml @@ -19,7 +19,7 @@ diff --git a/cmd/web-app/templates/layouts/base.gohtml b/cmd/web-app/templates/layouts/base.gohtml index df11402..b693d8d 100644 --- a/cmd/web-app/templates/layouts/base.gohtml +++ b/cmd/web-app/templates/layouts/base.gohtml @@ -125,13 +125,14 @@ {{ if or ($errMsg) ($errDetails) }}