diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index 74dbfe1..04dbe6c 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -18,8 +18,13 @@ /** * Returns the context object for the request. */ - implicit def context: Context = Context(servletContext.getContextPath, LoginAccount) - + implicit def context: Context = Context(servletContext.getContextPath, LoginAccount, currentURL) + + private def currentURL: String = { + val queryString = request.getQueryString + request.getRequestURI + (if(queryString != null) "?" + queryString else "") + } + private def LoginAccount: Option[Account] = { session.get("LOGIN_ACCOUNT") match { case Some(x: Account) => Some(x) @@ -79,4 +84,4 @@ } -case class Context(path: String, loginAccount: Option[Account]) \ No newline at end of file +case class Context(path: String, loginAccount: Option[Account], currentUrl: String) \ No newline at end of file diff --git a/src/main/scala/app/SignInController.scala b/src/main/scala/app/SignInController.scala index e840c77..c698ba1 100644 --- a/src/main/scala/app/SignInController.scala +++ b/src/main/scala/app/SignInController.scala @@ -15,6 +15,10 @@ )(SignInForm.apply) get("/signin"){ + val queryString = request.getQueryString + if(queryString.startsWith("/")){ + session.setAttribute("REDIRECT", queryString) + } html.signin(loadSystemSettings()) } @@ -25,7 +29,13 @@ } else { session.setAttribute("LOGIN_ACCOUNT", account.get) updateLastLoginDate(account.get.userName) - redirect("/%s".format(account.get.userName)) + + session.get("REDIRECT").map { redirectUrl => + session.removeAttribute("REDIRECT") + redirect(redirectUrl.asInstanceOf[String]) + }.getOrElse { + redirect("/%s".format(account.get.userName)) + } } } diff --git a/src/main/twirl/main.scala.html b/src/main/twirl/main.scala.html index 1f2ebc1..cd56246 100644 --- a/src/main/twirl/main.scala.html +++ b/src/main/twirl/main.scala.html @@ -46,7 +46,7 @@ }