|
@@ -1,5 +1,7 @@
|
|
|
settings = require("settings-sharelatex")
|
|
settings = require("settings-sharelatex")
|
|
|
logger = require("logger-sharelatex")
|
|
logger = require("logger-sharelatex")
|
|
|
|
|
+URL = require('url')
|
|
|
|
|
+querystring = require('querystring')
|
|
|
|
|
|
|
|
module.exports = RedirectManager =
|
|
module.exports = RedirectManager =
|
|
|
apply: (webRouter) ->
|
|
apply: (webRouter) ->
|
|
@@ -15,12 +17,20 @@ module.exports = RedirectManager =
|
|
|
else
|
|
else
|
|
|
if req.method == "POST"
|
|
if req.method == "POST"
|
|
|
code = 307
|
|
code = 307
|
|
|
|
|
+
|
|
|
if typeof target.url == "function"
|
|
if typeof target.url == "function"
|
|
|
url = target.url(req.params)
|
|
url = target.url(req.params)
|
|
|
if !url
|
|
if !url
|
|
|
return next()
|
|
return next()
|
|
|
else
|
|
else
|
|
|
url = target.url
|
|
url = target.url
|
|
|
|
|
+
|
|
|
|
|
+ # Special handling for redirecting to v1, to ensure that query params
|
|
|
|
|
+ # are encoded
|
|
|
|
|
+ if target.authWithV1
|
|
|
|
|
+ url = "/sign_in_to_v1?" + querystring.stringify(return_to: url + getQueryString(req))
|
|
|
|
|
+ return res.redirect code, url
|
|
|
|
|
+
|
|
|
if target.baseUrl?
|
|
if target.baseUrl?
|
|
|
url = "#{target.baseUrl}#{url}"
|
|
url = "#{target.baseUrl}#{url}"
|
|
|
res.redirect code, url + getQueryString(req)
|
|
res.redirect code, url + getQueryString(req)
|
|
@@ -29,5 +39,5 @@ module.exports = RedirectManager =
|
|
|
# have differences between Express and Rails, so safer to just pass the raw
|
|
# have differences between Express and Rails, so safer to just pass the raw
|
|
|
# string
|
|
# string
|
|
|
getQueryString = (req) ->
|
|
getQueryString = (req) ->
|
|
|
- qs = req.url.match(/\?.*$/)
|
|
|
|
|
- if qs? then qs[0] else ""
|
|
|
|
|
|
|
+ {search} = URL.parse(req.url)
|
|
|
|
|
+ if search then search else ""
|