(refs #279)Override ScalatraBase#fullUrl() to apply the configured base url to redirection.

This commit is contained in:
takezoe
2014-03-01 15:19:42 +09:00
parent 590b431ec1
commit 17f581f654
2 changed files with 13 additions and 9 deletions

View File

@@ -103,15 +103,21 @@ abstract class ControllerBase extends ScalatraFilter
if(request.getMethod.toUpperCase == "POST"){
org.scalatra.Unauthorized(redirect("/signin"))
} else {
val currentUrl = baseUrl + defining(request.getQueryString){ queryString =>
org.scalatra.Unauthorized(redirect("/signin?redirect=" + StringUtil.urlEncode(
defining(request.getQueryString){ queryString =>
request.getRequestURI.substring(request.getContextPath.length) + (if(queryString != null) "?" + queryString else "")
}
session.setAttribute(Keys.Session.Redirect, currentUrl)
org.scalatra.Unauthorized(redirect("/signin"))
)))
}
}
}
override def fullUrl(path: String, params: Iterable[(String, Any)] = Iterable.empty,
includeContextPath: Boolean = true, includeServletPath: Boolean = true)
(implicit request: HttpServletRequest, response: HttpServletResponse) =
if (path.startsWith("http")) path
else baseUrl + url(path, params, includeContextPath, includeServletPath)
}
/**

View File

@@ -1,7 +1,6 @@
package app
import util._
import util.Implicits._
import service._
import jp.sf.amateras.scalatra.forms._
@@ -31,8 +30,7 @@ trait IndexControllerBase extends ControllerBase {
get("/signin"){
val redirect = params.get("redirect")
if(redirect.isDefined && redirect.get.startsWith("/")){
session.setAttribute(Keys.Session.Redirect, redirect.get)
flash += Keys.Flash.Redirect -> redirect.get
}
html.signin(loadSystemSettings())
}
@@ -56,7 +54,7 @@ trait IndexControllerBase extends ControllerBase {
session.setAttribute(Keys.Session.LoginAccount, account)
updateLastLoginDate(account.userName)
session.getAndRemove[String](Keys.Session.Redirect).map { redirectUrl =>
flash.get(Keys.Flash.Redirect).asInstanceOf[Option[String]].map { redirectUrl =>
if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){
redirect("/")
} else {