731f609d40cd0b0d4a7bcd27ed79d3a04ff3c22a max Thu Jun 15 10:04:23 2017 -0700 making hgLogin create links as it was before my recent changes, so return to the status at commit 263daca0593f4d67610f2466cdcdb262f27d6a67. This code is only relevant when no returnto argument is specified (which shouldn't happen as long as people click around on our website). the relativeLink hg.conf option is only used on the CIRM server. refs #19630 diff --git src/hg/hgLogin/hgLogin.c src/hg/hgLogin/hgLogin.c index fcc77df..a0e52bd 100644 --- src/hg/hgLogin/hgLogin.c +++ src/hg/hgLogin/hgLogin.c @@ -287,35 +287,44 @@ struct dyString *getLoginCookieJS(char *userName, uint idx) /* returns javascript statements that set the cookies associated with * logging in as a particular user */ { struct dyString *result = dyStringNew(1024); struct slName *newCookies = loginLoginUser(userName, idx), *sl; for (sl = newCookies; sl != NULL; sl = sl->next) dyStringPrintf(result, " document.cookie = '%s';", sl->name); return result; } char *getReturnToURL() /* get URL from cart var returnto; if empty, make URL to hgSession on login host. */ { char *returnURL = cartUsualString(cart, "returnto", ""); +char *hgLoginHost = wikiLinkHost(); +char *cgiDir = cgiScriptDirUrl(); char returnTo[2048]; +boolean relativeLink = cfgOptionBooleanDefault(CFG_LOGIN_RELATIVE, FALSE); if (!returnURL || sameString(returnURL,"")) - safef(returnTo, sizeof(returnTo), "%shgSession?hgS_doMainPage=1", - wikiServerAndCgiDir()); + // XX replace with call to new function hLoginHostUrl + if (relativeLink) + // reverse proxies and all-https sites have no need for absolute links + safef(returnTo, sizeof(returnTo), "%shgSession?hgS_doMainPage=1", cgiDir); + else + safef(returnTo, sizeof(returnTo), + "http%s://%s%shgSession?hgS_doMainPage=1", + cgiAppendSForHttps(), hgLoginHost, cgiDir); else safecpy(returnTo, sizeof(returnTo), returnURL); return cloneString(returnTo); } void returnToURL(int delay) /* delay for delay mill-seconds then return to the "returnto" URL */ { char *returnURL = getReturnToURL(); jsInlineF( "setTimeout(function(){location='%s';}, %d);\n" , returnURL, delay); } static void redirectToLoginPage(char *paramStr)