@@ -364,7 +364,11 @@ func (p *OAuthProxy) SaveSession(rw http.ResponseWriter, req *http.Request, s *s
364364// RobotsTxt disallows scraping pages from the OAuthProxy
365365func (p *OAuthProxy) RobotsTxt(rw http.ResponseWriter) {
366366 rw.WriteHeader(http.StatusOK)
367− fmt.Fprintf(rw, "User-agent: *\nDisallow: /")
367+ _, err := fmt.Fprintf(rw, "User-agent: *\nDisallow: /")
368+ if err != nil {
369+ logger.Printf("Error writing robots.txt: %s", err.Error())
370+ p.ErrorPage(rw, 500, "Internal Error", err.Error())
371+ }
368372}
369373
370374// ErrorPage writes an error response
@@ -379,13 +383,22 @@ func (p *OAuthProxy) ErrorPage(rw http.ResponseWriter, code int, title string, m
379383 Message: message,
380384 ProxyPrefix: p.ProxyPrefix,
381385 }
382− p.templates.ExecuteTemplate(rw, "error.html", t)
386+ err := p.templates.ExecuteTemplate(rw, "error.html", t)
387+ if err != nil {
388+ logger.Printf("Error rendering error.html template: %s", err.Error())
389+ http.Error(rw, "Internal Server Error", http.StatusInternalServerError)
390+ }
383391}
384392
385393// SignInPage writes the sing in template to the response
386394func (p *OAuthProxy) SignInPage(rw http.ResponseWriter, req *http.Request, code int) {
387395 prepareNoCache(rw)
388− p.ClearSessionCookie(rw, req)
396+ err := p.ClearSessionCookie(rw, req)
397+ if err != nil {
398+ logger.Printf("Error clearing session cookie: %s", err.Error())
399+ p.ErrorPage(rw, 500, "Internal Error", err.Error())
400+ return
401+ }
389402 rw.WriteHeader(code)
390403
391404 redirectURL, err := p.GetRedirect(req)
@@ -419,11 +432,15 @@ func (p *OAuthProxy) SignInPage(rw http.ResponseWriter, req *http.Request, code
419432 if p.providerNameOverride != "" {
420433 t.ProviderName = p.providerNameOverride
421434 }
422− p.templates.ExecuteTemplate(rw, "sign_in.html", t)
435+ err = p.templates.ExecuteTemplate(rw, "sign_in.html", t)
436+ if err != nil {
437+ logger.Printf("Error rendering sign_in.html template: %s", err.Error())
438+ p.ErrorPage(rw, 500, "Internal Error", err.Error())
439+ }
423440}
424441
425442// ManualSignIn handles basic auth logins to the proxy
426−func (p *OAuthProxy) ManualSignIn(rw http.ResponseWriter, req *http.Request) (string, bool) {
443+func (p *OAuthProxy) ManualSignIn(req *http.Request) (string, bool) {
427444 if req.Method != "POST" || p.basicAuthValidator == nil {
428445 return "", false
429446 }
@@ -632,10 +649,15 @@ func (p *OAuthProxy) SignIn(rw http.ResponseWriter, req *http.Request) {
632649 return
633650 }
634651
635− user, ok := p.ManualSignIn(rw, req)
652+ user, ok := p.ManualSignIn(req)
636653 if ok {
637654 session := &sessionsapi.SessionState{User: user}
638− p.SaveSession(rw, req, session)
655+ err = p.SaveSession(rw, req, session)
656+ if err != nil {
657+ logger.Printf("Error saving session: %s", err.Error())
658+ p.ErrorPage(rw, 500, "Internal Error", err.Error())
659+ return
660+ }
639661 http.Redirect(rw, req, redirect, http.StatusFound)
640662 } else {
641663 if p.SkipProviderButton {
@@ -663,7 +685,11 @@ func (p *OAuthProxy) UserInfo(rw http.ResponseWriter, req *http.Request) {
663685 }
664686 rw.Header().Set("Content-Type", "application/json")
665687 rw.WriteHeader(http.StatusOK)
666− json.NewEncoder(rw).Encode(userInfo)
688+ err = json.NewEncoder(rw).Encode(userInfo)
689+ if err != nil {
690+ logger.Printf("Error encoding user info: %s", err.Error())
691+ p.ErrorPage(rw, 500, "Internal Error", err.Error())
692+ }
667693}
668694
669695// SignOut sends a response to clear the authentication cookie
@@ -674,7 +700,12 @@ func (p *OAuthProxy) SignOut(rw http.ResponseWriter, req *http.Request) {
674700 p.ErrorPage(rw, 500, "Internal Error", err.Error())
675701 return
676702 }
677− p.ClearSessionCookie(rw, req)
703+ err = p.ClearSessionCookie(rw, req)
704+ if err != nil {
705+ logger.Printf("Error clearing session cookie: %s", err.Error())
706+ p.ErrorPage(rw, 500, "Internal Error", err.Error())
707+ return
708+ }
678709 http.Redirect(rw, req, redirect, http.StatusFound)
679710}
680711
@@ -837,7 +868,10 @@ func (p *OAuthProxy) getAuthenticatedSession(rw http.ResponseWriter, req *http.R
837868 if session != nil && session.Email != "" && !p.Validator(session.Email) {
838869 logger.Printf(session.Email, req, logger.AuthFailure, "Invalid authentication via session: removing session %s", session)
839870 // Invalid session, clear it
840− p.ClearSessionCookie(rw, req)
871+ err := p.ClearSessionCookie(rw, req)
872+ if err != nil {
873+ logger.Printf("Error clearing session cookie: %s", err.Error())
874+ }
841875 return nil, ErrNeedsLogin
842876 }
843877