我想使用有关当前用户的数据来验证 Play 2 Scala 密码更新表单。想象一个表单,它再次收集当前密码、新密码和新密码。在验证此表单时,应该检查“当前密码”的值是否实际与当前用户的实际密码匹配。在验证中,我需要访问当前用户——这需要访问当前请求。显然,当我定义表单时,请求不在范围内:
val updatePasswordForm = Form(mapping(
"currPassword" -> password,
"newPassword" -> password,
"newPasswordAgain" -> password)(PasswordUpdate.apply)(PasswordUpdate.unapply)
verifying ("passwordsMustMatch", update => update.newPassword == update.newPasswordAgain)
verifying ("incorrectCurrentPassword", pws => authenticate(GAH NEED CURRENT USERS EMAIL, update.currPassword)))
我完全理解在表单验证中具有请求访问权限会为表单引入不需要的依赖项。我只是好奇人们是否有聪明的方法来解决这个问题。到目前为止,我唯一的方法是这样的:
def updatePassword = Action { implicit req =>
validateCurrentPasswordMatches(updatePasswordForm).bindFromRequest.fold(
....
我想要一种将这个依赖于请求的验证打包在共享表单声明中的方法。