diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index ffbf7c2..98210fa 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -107,7 +107,11 @@ if(context.loginAccount.isDefined){ org.scalatra.Unauthorized(redirect("/")) } else { - org.scalatra.Unauthorized(redirect("/signin?" + currentURL)) + if(request.getMethod.toUpperCase == "POST"){ + org.scalatra.Unauthorized(redirect("/signin")) + } else { + org.scalatra.Unauthorized(redirect("/signin?redirect=" + currentURL)) + } } } else { org.scalatra.Unauthorized() @@ -126,6 +130,14 @@ */ case class Context(path: String, loginAccount: Option[Account], currentUrl: String, request: HttpServletRequest){ + def redirectUrl = { + if(request.getParameter("redirect") != null){ + request.getParameter("redirect") + } else { + currentUrl + } + } + /** * Get object from cache. * diff --git a/src/main/scala/app/SignInController.scala b/src/main/scala/app/SignInController.scala index a94609a..d7e8248 100644 --- a/src/main/scala/app/SignInController.scala +++ b/src/main/scala/app/SignInController.scala @@ -16,9 +16,9 @@ )(SignInForm.apply) get("/signin"){ - val queryString = request.getQueryString - if(queryString != null && queryString.startsWith("/")){ - session.setAttribute("REDIRECT", queryString) + val redirect = params.get("redirect") + if(redirect.isDefined && redirect.get.startsWith("/")){ + session.setAttribute("REDIRECT", redirect.get) } html.signin(loadSystemSettings()) } diff --git a/src/main/twirl/main.scala.html b/src/main/twirl/main.scala.html index 48e20f2..fc996fe 100644 --- a/src/main/twirl/main.scala.html +++ b/src/main/twirl/main.scala.html @@ -60,7 +60,7 @@ } } else { - Sign in + Sign in }