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