not found page
This commit is contained in:
@@ -123,8 +123,7 @@ func (s *webpageRouter) serveTemplate(c *gin.Context) (response.Response, error)
|
||||
r := c.Request
|
||||
ctx := r.Context()
|
||||
|
||||
b, err := s.templater.Execute(
|
||||
strings.Trim(r.URL.Path, "/"),
|
||||
args := []any{
|
||||
"Request",
|
||||
r,
|
||||
// add services and data here
|
||||
@@ -142,24 +141,36 @@ func (s *webpageRouter) serveTemplate(c *gin.Context) (response.Response, error)
|
||||
middleware.GetIdentity(ctx),
|
||||
"Auth",
|
||||
newTemplateAuthenticator(r),
|
||||
)
|
||||
}
|
||||
|
||||
b, err := s.templater.Execute(strings.Trim(r.URL.Path, "/"), args...)
|
||||
if err != nil {
|
||||
return s.handleTemplateError(err)
|
||||
if isFileNotFoundError(err) || isInvalidWildcardValue(err) {
|
||||
werr := response.NotFound().
|
||||
Wrap(ErrTemplateNotFound{
|
||||
err: err,
|
||||
}).
|
||||
Msg("resource not found")
|
||||
|
||||
nfb, nferr := s.templater.Execute("not-found", args...)
|
||||
if nferr != nil {
|
||||
s.log.Error("failed to render not-found page: %v", nferr)
|
||||
return nil, werr
|
||||
}
|
||||
|
||||
return nil, werr.
|
||||
HTML(nfb)
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return response.HTML(b), nil
|
||||
}
|
||||
|
||||
func (s *webpageRouter) handleTemplateError(err error) (response.Response, error) {
|
||||
if isFileNotFoundError(err) {
|
||||
return nil, response.NotFound().
|
||||
Wrap(ErrTemplateNotFound{
|
||||
err: err,
|
||||
}).
|
||||
Msg("resource not found")
|
||||
}
|
||||
|
||||
return nil, err
|
||||
func isInvalidWildcardValue(err error) bool {
|
||||
var te *templater.ErrInvalidWildcardValue
|
||||
return errors.As(err, &te)
|
||||
}
|
||||
|
||||
func isFileNotFoundError(err error) bool {
|
||||
|
||||
Reference in New Issue
Block a user