XHR login form
parent
1e7211def1
commit
10faba2025
|
@ -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")
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)))
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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")) {
|
||||
<div class="content_box login">
|
||||
<div class="signup_box">
|
||||
<h1 class="lichess_title">@trans.signIn()</h1>
|
||||
<form action="@routes.Auth.authenticate@referrer.map { ref =>?referrer=@{java.net.URLEncoder.encode(ref, "US-ASCII")}}" method="POST">
|
||||
<form class="login" action="@routes.Auth.authenticate@referrer.map { ref =>?referrer=@{java.net.URLEncoder.encode(ref, "US-ASCII")}}" method="POST">
|
||||
@globalError(form)
|
||||
<ul>
|
||||
@auth.formFields(form("username"), form("password"), none, register = false)
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
$(function() {
|
||||
load($('form.login'));
|
||||
});
|
||||
|
||||
function load($f) {
|
||||
$f.submit(function() {
|
||||
$f.find('.submit').attr('disabled', true).attr('data-icon', null).html(lichess.spinnerHtml);
|
||||
$.ajax({
|
||||
url: $f.attr('action'),
|
||||
method: $f.attr('method'),
|
||||
data: {
|
||||
username: $f.find('.username input').val(),
|
||||
password: $f.find('.password input').val()
|
||||
},
|
||||
success: function(res) {
|
||||
return lichess.redirect(res.substr(3));
|
||||
},
|
||||
error: function(err) {
|
||||
$f.replaceWith($(err.responseText).find('form.login'));
|
||||
load($('form.login'));
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue