Fix a problem to redirect wikipage named by multi-byte characters

In some specific case, redirect path (created from route params) is incorrect.
`redirectUrl` is expected to be encoded,
but scalatra decodes route params by rl.UrlCodingUtils via ScalatraBase.UriDecoder.
To avoid this problem, I add dirty workaround to encode redirect path.
This commit is contained in:
Kohei Ozaki
2013-10-19 14:20:35 +09:00
parent 2d85d41e9c
commit 37358e9c8c

View File

@@ -3,6 +3,7 @@ package app
import service._ import service._
import jp.sf.amateras.scalatra.forms._ import jp.sf.amateras.scalatra.forms._
import util.Implicits._ import util.Implicits._
import util.StringUtil._
import util.Keys import util.Keys
class SignInController extends SignInControllerBase with SystemSettingsService with AccountService class SignInController extends SignInControllerBase with SystemSettingsService with AccountService
@@ -47,7 +48,7 @@ trait SignInControllerBase extends ControllerBase { self: SystemSettingsService
if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){ if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){
redirect("/") redirect("/")
} else { } else {
redirect(redirectUrl) redirect(urlEncode(redirectUrl).replaceAll("%2F", "/"))
} }
}.getOrElse { }.getOrElse {
redirect("/") redirect("/")