Fix redirect behaviour after sign in.

This commit is contained in:
takezoe
2013-08-10 23:13:43 +09:00
parent 69c5f9e19a
commit 14de86afa0
3 changed files with 17 additions and 5 deletions

View File

@@ -107,7 +107,11 @@ abstract class ControllerBase extends ScalatraFilter
if(context.loginAccount.isDefined){ if(context.loginAccount.isDefined){
org.scalatra.Unauthorized(redirect("/")) org.scalatra.Unauthorized(redirect("/"))
} else { } 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 { } else {
org.scalatra.Unauthorized() org.scalatra.Unauthorized()
@@ -126,6 +130,14 @@ abstract class ControllerBase extends ScalatraFilter
*/ */
case class Context(path: String, loginAccount: Option[Account], currentUrl: String, request: HttpServletRequest){ 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. * Get object from cache.
* *

View File

@@ -16,9 +16,9 @@ trait SignInControllerBase extends ControllerBase { self: SystemSettingsService
)(SignInForm.apply) )(SignInForm.apply)
get("/signin"){ get("/signin"){
val queryString = request.getQueryString val redirect = params.get("redirect")
if(queryString != null && queryString.startsWith("/")){ if(redirect.isDefined && redirect.get.startsWith("/")){
session.setAttribute("REDIRECT", queryString) session.setAttribute("REDIRECT", redirect.get)
} }
html.signin(loadSystemSettings()) html.signin(loadSystemSettings())
} }

View File

@@ -60,7 +60,7 @@
} }
<a href="@path/signout" class="menu-last" data-toggle="tooltip" data-placement="bottom" title="Sign out"><i class="icon-share-alt"></i></a> <a href="@path/signout" class="menu-last" data-toggle="tooltip" data-placement="bottom" title="Sign out"><i class="icon-share-alt"></i></a>
} else { } else {
<a href="@path/signin?@currentUrl" class="btn btn-last">Sign in</a> <a href="@path/signin?redirect=@redirectUrl" class="btn btn-last">Sign in</a>
} }
</div><!--/.nav-collapse --> </div><!--/.nav-collapse -->
</div> </div>