我正在使用 FosUserBundle 管理我的网络用户,并通过API登录移动应用。
我有一个resetPasswordAction
API方法可以在应用内启用密码重置。
但我也为一些允许我管理角色的用户使用第三方数据库,因此这些用户必须使用第三方凭据注册/登录。然后我复制FosUser数据库中的数据。
现在,如果他们想要重置密码,显然它将使用我的API方法在我的FosUser数据库上完成,但不会在第三方上完成。我想要实现的是捕获用户的电子邮件,其旧密码和新密码,以便我可以使用第三方API方法来更新其密码第三方数据库。
我已尝试创建事件监听器,但RESETTING_RESET_COMPLETED
收到FilterUserResponseEvent
,因此我只能抓住电子邮件和新密码。
我有点卡在这里,所以如果有人知道如何管理这个,那将是一个很大的帮助!
感谢。
答案 0 :(得分:0)
您可能希望将用户实体(扩展FOS用户实体)上的旧密码保留为字段。
/**
* @var string
*
* @ORM\Column(name="old_password", type="string")
*/
private $oldPassword;
您必须创建一个命令,将所有用户的当前密码迁移到新的" old_password"数据库中的列。
这也很棘手,因为每次用户更改密码时都必须填充该实体字段,并在创建用户时填充密码。这给处理用户交互的任何控制器增加了很多复杂性。
然后在您的事件监听器中,您必须从用户实体获取旧密码,执行您的API帖子,如果一切顺利,则更新数据库并设置" old_password&# 34;到当前密码。