From 199288045480856985e377f7475a1991a2decc33 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Thu, 19 Nov 2020 10:09:05 -0500 Subject: Add theme-specific error page --- server.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'server.go') diff --git a/server.go b/server.go index 7159697..b1ac3a1 100644 --- a/server.go +++ b/server.go @@ -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 { -- cgit v1.2.3-59-g8ed1b