diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index d1e39e8..cf91fea 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -103,15 +103,21 @@ if(request.getMethod.toUpperCase == "POST"){ org.scalatra.Unauthorized(redirect("/signin")) } else { - val currentUrl = baseUrl + 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")) + org.scalatra.Unauthorized(redirect("/signin?redirect=" + StringUtil.urlEncode( + defining(request.getQueryString){ queryString => + request.getRequestURI.substring(request.getContextPath.length) + (if(queryString != null) "?" + queryString else "") + } + ))) } } } + 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) + } /** diff --git a/src/main/scala/app/IndexController.scala b/src/main/scala/app/IndexController.scala index 92ee291..0e46b3c 100644 --- a/src/main/scala/app/IndexController.scala +++ b/src/main/scala/app/IndexController.scala @@ -1,7 +1,6 @@ package app import util._ -import util.Implicits._ import service._ import jp.sf.amateras.scalatra.forms._ @@ -31,8 +30,7 @@ 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 @@ 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 {