From 8af1eeaa4c26eab67bae277e703bc8e7060b88a4 Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Fri, 26 Apr 2019 19:44:22 +0200 Subject: [PATCH] Fix: Use cookie for redirects after oAuth flow Signed-off-by: Knut Ahlers --- redirect.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/redirect.go b/redirect.go index 98dfbd4..0c4d83a 100644 --- a/redirect.go +++ b/redirect.go @@ -3,16 +3,25 @@ package main import ( "net/http" "net/url" + "strings" "github.com/pkg/errors" ) func getRedirectURL(r *http.Request, fallback string) (string, error) { var ( - redirURL string params url.Values + redirURL string + sessURL string ) + if cookieStore != nil { + sess, _ := cookieStore.Get(r, strings.Join([]string{mainCfg.Cookie.Prefix, "main"}, "-")) + if s, ok := sess.Values["go"].(string); ok { + sessURL = s + } + } + switch { case r.URL.Query().Get("go") != "": // We have a GET request, use "go" query param @@ -24,6 +33,10 @@ func getRedirectURL(r *http.Request, fallback string) (string, error) { redirURL = r.FormValue("go") params = url.Values{} // No need to read other form fields + case sessURL != "": + redirURL = sessURL + params = url.Values{} + default: // No URL specified, use specified fallback URL return fallback, nil