in app/com/gu/viewer/proxy/PreviewProxy.scala [34:65]
private def doPreviewAuth(request: PreviewProxyRequest) = {
val proxyRequestUrl = previewLoginUrl
log.info(s"Proxy Preview auth to: $proxyRequestUrl")
def handleResponse(response: ProxyResponse) = {
val returnUrl = proxyUriToViewerUri(request.requestUri).getOrElse(request.requestUri)
// Store new preview session from response
// - should we also remove auth cookie from session to ensure its recreated?
val session = PreviewSession.fromResponseHeaders(response)
.withPlaySessionFrom(request.session)
.withReturnUrl(Some(returnUrl))
val locHeader = response.header("Location")
(session.sessionCookie, locHeader) match {
case (Some(_), Some(location)) => Future.successful {
PreviewAuthRedirectProxyResult(location, session)
}
case (None, _) => error("Unexpected response session from preview login request", response)
case (_, None) => error("Invalid response from preview login request", response)
}
}
proxyClient.post(proxyRequestUrl, queryString = Seq(PREVIEW_AUTH_REDIRECT_PARAM -> loginCallbackUrl(request))) {
case response if response.status == 303 => handleResponse(response)
case response => error("Unexpected response from preview authentication request", response)
}
}