diff --git a/app/controllers/Account.scala b/app/controllers/Account.scala index 0409d8795a..0a5076bbe7 100644 --- a/app/controllers/Account.scala +++ b/app/controllers/Account.scala @@ -97,17 +97,25 @@ object Account extends LilaController { def close = Auth { implicit ctx => me => - Ok(html.account.close(me)).fuccess + Ok(html.account.close(me, Env.security.forms.closeAccount)).fuccess } - def closeConfirm = Auth { ctx => + def closeConfirm = AuthBody { implicit ctx => me => - implicit val req = ctx.req - (UserRepo disable me.id) >> - Env.team.api.quitAll(me.id) >> - (Env.security disconnect me.id) inject { - Redirect(routes.User show me.username) withCookies LilaCookie.newSession + implicit val req = ctx.body + FormFuResult(Env.security.forms.closeAccount) { err => + fuccess(html.account.close(me, err)) + } { password => + UserRepo.checkPassword(me.id, password) flatMap { + case false => BadRequest(html.account.close(me, Env.security.forms.closeAccount)).fuccess + case true => + (UserRepo disable me.id) >> + Env.team.api.quitAll(me.id) >> + (Env.security disconnect me.id) inject { + Redirect(routes.User show me.username) withCookies LilaCookie.newSession + } } + } } def kid = Auth { implicit ctx => diff --git a/app/views/account/close.scala.html b/app/views/account/close.scala.html index 25a31ca336..08d6613715 100644 --- a/app/views/account/close.scala.html +++ b/app/views/account/close.scala.html @@ -1,4 +1,4 @@ -@(u: User)(implicit ctx: Context) +@(u: User, form: Form[_])(implicit ctx: Context) @title = @{ s"${u.username} - ${trans.closeAccount.str()}" } @@ -10,13 +10,18 @@ @trans.closeAccountExplanation()

-

- - @trans.changedMindDoNotCloseAccount() - -

-

- +
diff --git a/app/views/account/passwdFormField.scala.html b/app/views/account/passwdFormField.scala.html index f6699f1c7e..914128370f 100644 --- a/app/views/account/passwdFormField.scala.html +++ b/app/views/account/passwdFormField.scala.html @@ -11,4 +11,3 @@ value="@field.value"/> @errMsg(field) - diff --git a/modules/security/src/main/DataForm.scala b/modules/security/src/main/DataForm.scala index d76dcdbb78..2de91eda09 100644 --- a/modules/security/src/main/DataForm.scala +++ b/modules/security/src/main/DataForm.scala @@ -94,6 +94,8 @@ final class DataForm( )(ChangeEmail.apply)(ChangeEmail.unapply) .verifying("This email already exists", e => !emailAddress.isTaken(e.email)) ) + + val closeAccount = Form(single("passwd" -> nonEmptyText)) } object DataForm {