diff options
author | Drew DeVault <sir@cmpwn.com> | 2020-11-19 10:09:05 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2020-11-19 10:09:05 -0500 |
commit | 199288045480856985e377f7475a1991a2decc33 (patch) | |
tree | 80517ad8577d391dd58c500e77c3694e19fd6ee2 /server.go | |
parent | 5087e4b327732ba826bf6c839c06dcca1f8314f7 (diff) | |
download | alps-199288045480856985e377f7475a1991a2decc33.tar.gz alps-199288045480856985e377f7475a1991a2decc33.zip |
Add theme-specific error page
Diffstat (limited to 'server.go')
-rw-r--r-- | server.go | 26 |
1 files changed, 21 insertions, 5 deletions
@@ -382,15 +382,31 @@ func New(e *echo.Echo, options *Options) (*Server, error) { return nil, err } - e.HTTPErrorHandler = func(err error, c echo.Context) { + e.HTTPErrorHandler = func(err error, ctx echo.Context) { code := http.StatusInternalServerError if he, ok := err.(*echo.HTTPError); ok { code = he.Code - } else { - c.Logger().Error(err) } - // TODO: hide internal errors - c.String(code, err.Error()) + + type ErrorRenderData struct { + BaseRenderData + Code int + Err error + Status string + } + rdata := ErrorRenderData{ + BaseRenderData: *NewBaseRenderData(ctx), + Err: err, + Code: code, + Status: http.StatusText(code), + } + + if err := ctx.Render(code, "error.html", &rdata); err != nil { + ctx.Logger().Error(fmt.Errorf( + "Error occured rendering error page: %w. How meta.", err)) + } + + ctx.Logger().Error(err) } e.Pre(func(next echo.HandlerFunc) echo.HandlerFunc { |