diff --git a/app/controllers/Account.scala b/app/controllers/Account.scala index b36ac14be1..dfd3328c3b 100644 --- a/app/controllers/Account.scala +++ b/app/controllers/Account.scala @@ -147,9 +147,9 @@ object Account extends LilaController { def emailConfirm(token: String) = Open { implicit ctx => Env.security.emailChange.confirm(token) flatMap { _ ?? { user => - controllers.Auth.authenticateUser(user, result = Redirect { - s"${routes.Account.email}?ok=1" - }.fuccess.some) + controllers.Auth.authenticateUser(user, result = Some { _ => + Redirect(s"${routes.Account.email}?ok=1") + }) } } } diff --git a/app/controllers/Auth.scala b/app/controllers/Auth.scala index 7d1a4354b1..4f38c95f59 100644 --- a/app/controllers/Auth.scala +++ b/app/controllers/Auth.scala @@ -37,17 +37,18 @@ object Auth extends LilaController { } } - def authenticateUser(u: UserModel, result: Option[Fu[Result]] = None)(implicit ctx: Context): Fu[Result] = { + def authenticateUser(u: UserModel, result: Option[String => Result] = None)(implicit ctx: Context): Fu[Result] = { implicit val req = ctx.req u.ipBan.fold( fuccess(Redirect(routes.Lobby.home)), api.saveAuthentication(u.id, ctx.mobileApiVersion) flatMap { sessionId => negotiate( - html = result | Redirect { - get("referrer").filter(goodReferrer) orElse + html = fuccess { + val redirectTo = get("referrer").filter(goodReferrer) orElse req.session.get(api.AccessUri) getOrElse routes.Lobby.home.url - }.fuccess, + result.fold(Redirect(redirectTo))(_(redirectTo)) + }, api = _ => mobileUserOk(u) ) map authenticateCookie(sessionId) } recoverWith authRecovery @@ -94,7 +95,7 @@ object Auth extends LilaController { UserRepo.email(u.id) foreach { _ foreach { garbageCollect(u, _) } } - authenticateUser(u) + authenticateUser(u, Some(redirectTo => Ok(redirectTo))) } ) } diff --git a/app/views/auth/login.scala.html b/app/views/auth/login.scala.html index a43619c382..2be8c72a7a 100644 --- a/app/views/auth/login.scala.html +++ b/app/views/auth/login.scala.html @@ -1,10 +1,12 @@ @(form: Form[_], referrer: Option[String])(implicit ctx: Context) -@auth.layout(title = trans.signIn.txt()) { +@auth.layout( +title = trans.signIn.txt(), +moreJs = jsTag("login.js")) {