aboutsummaryrefslogtreecommitdiff
path: root/server.go
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2020-11-19 10:09:05 -0500
committerDrew DeVault <sir@cmpwn.com>2020-11-19 10:09:05 -0500
commit199288045480856985e377f7475a1991a2decc33 (patch)
tree80517ad8577d391dd58c500e77c3694e19fd6ee2 /server.go
parent5087e4b327732ba826bf6c839c06dcca1f8314f7 (diff)
downloadalps-199288045480856985e377f7475a1991a2decc33.tar.gz
alps-199288045480856985e377f7475a1991a2decc33.zip
Add theme-specific error page
Diffstat (limited to 'server.go')
-rw-r--r--server.go26
1 files changed, 21 insertions, 5 deletions
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 {