diff options
Diffstat (limited to 'service')
| -rw-r--r-- | service/service.go | 10 | ||||
| -rw-r--r-- | service/transport.go | 8 | 
2 files changed, 12 insertions, 6 deletions
| diff --git a/service/service.go b/service/service.go index 1028765..a29345e 100644 --- a/service/service.go +++ b/service/service.go @@ -109,15 +109,21 @@ func (s *service) cdata(c *client, title string, count int, rinterval int,  	return  } -func (s *service) ErrorPage(c *client, err error) error { +func (s *service) ErrorPage(c *client, err error, retry bool) error {  	var errStr string +	var sessionErr bool  	if err != nil {  		errStr = err.Error() +		if err == errInvalidSession || err == errInvalidCSRFToken { +			sessionErr = true +		}  	}  	cdata := s.cdata(nil, "error", 0, 0, "")  	data := &renderer.ErrorData{  		CommonData: cdata, -		Error:      errStr, +		Err:        errStr, +		Retry:      retry, +		SessionErr: sessionErr,  	}  	return s.renderer.Render(c.rctx, c.w, renderer.ErrorPage, data)  } diff --git a/service/transport.go b/service/transport.go index 317ce5b..50bf9be 100644 --- a/service/transport.go +++ b/service/transport.go @@ -62,11 +62,11 @@ func redirect(c *client, url string) {  func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler {  	r := mux.NewRouter() -	writeError := func(c *client, err error, t int) { +	writeError := func(c *client, err error, t int, retry bool) {  		switch t {  		case HTML:  			c.w.WriteHeader(http.StatusInternalServerError) -			s.ErrorPage(c, err) +			s.ErrorPage(c, err, retry)  		case JSON:  			c.w.WriteHeader(http.StatusInternalServerError)  			json.NewEncoder(c.w).Encode(map[string]string{ @@ -110,13 +110,13 @@ func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler {  			err = authenticate(c, at)  			if err != nil { -				writeError(c, err, rt) +				writeError(c, err, rt, req.Method == http.MethodGet)  				return  			}  			err = f(c)  			if err != nil { -				writeError(c, err, rt) +				writeError(c, err, rt, req.Method == http.MethodGet)  				return  			}  		} | 
