From 37358e9c8cfa749733a1dcfa936524f894af830c Mon Sep 17 00:00:00 2001 From: Kohei Ozaki Date: Sat, 19 Oct 2013 14:20:35 +0900 Subject: [PATCH] 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. --- src/main/scala/app/SignInController.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/app/SignInController.scala b/src/main/scala/app/SignInController.scala index 7d4b2a9b0..f920688e0 100644 --- a/src/main/scala/app/SignInController.scala +++ b/src/main/scala/app/SignInController.scala @@ -3,6 +3,7 @@ package app import service._ import jp.sf.amateras.scalatra.forms._ import util.Implicits._ +import util.StringUtil._ import util.Keys class SignInController extends SignInControllerBase with SystemSettingsService with AccountService @@ -47,7 +48,7 @@ trait SignInControllerBase extends ControllerBase { self: SystemSettingsService if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){ redirect("/") } else { - redirect(redirectUrl) + redirect(urlEncode(redirectUrl).replaceAll("%2F", "/")) } }.getOrElse { redirect("/")