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
}