ask password to close account - closes #671

This commit is contained in:
Thibault Duplessis 2015-07-01 14:30:48 +02:00
parent 666593e57f
commit dff5b1eaa2
4 changed files with 30 additions and 16 deletions

View file

@ -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 =>

View file

@ -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()
</p>
<form action="@routes.Account.closeConfirm" method="POST">
<br /><br />
<a href="@routes.User.show(u.username)">
@trans.changedMindDoNotCloseAccount()
</a>
<br /><br />
<br /><br />
<input type="submit" class="submit button" value="@trans.closeYourAccount()" />
<ul>
@account.passwdFormField(form("passwd"), trans.password.str())
<li>@errMsg(form)</li>
<li>
<button type="submit" class="submit button">@trans.closeYourAccount()</button>
</li>
<li>
<a href="@routes.User.show(u.username)">
@trans.changedMindDoNotCloseAccount()
</a>
</li>
</ul>
</form>
</div>
</div>

View file

@ -11,4 +11,3 @@
value="@field.value"/>
@errMsg(field)
</li>

View file

@ -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 {