在FosUserBundle中,获取用户的旧密码和新密码以在第三方数据库

时间:2017-07-25 08:18:02

标签: symfony fosuserbundle symfony-2.8

我正在使用 FosUserBundle 管理我的网络用户,并通过API登录移动应用。 我有一个resetPasswordAction API方法可以在应用内启用密码重置。

但我也为一些允许我管理角色的用户使用第三方数据库,因此这些用户必须使用第三方凭据注册/登录。然后我复制FosUser数据库中的数据。

现在,如果他们想要重置密码,显然它将使用我的API方法在我的FosUser数据库上完成,但不会在第三方上完成。我想要实现的是捕获用户的电子邮件,其旧密码和新密码,以便我可以使用第三方API方法来更新其密码第三方数据库

我已尝试创建事件监听器,但RESETTING_RESET_COMPLETED收到FilterUserResponseEvent,因此我只能抓住电子邮件和新密码。

我有点卡在这里,所以如果有人知道如何管理这个,那将是一个很大的帮助!

感谢。

1 个答案:

答案 0 :(得分:0)

您可能希望将用户实体(扩展FOS用户实体)上的旧密码保留为字段。

/**
 * @var string
 *
 * @ORM\Column(name="old_password", type="string")
 */
private $oldPassword;

您必须创建一个命令,将所有用户的当前密码迁移到新的" old_password"数据库中的列。

这也很棘手,因为每次用户更改密码时都必须填充该实体字段,并在创建用户时填充密码。这给处理用户交互的任何控制器增加了很多复杂性。

然后在您的事件监听器中,您必须从用户实体获取旧密码,执行您的API帖子,如果一切顺利,则更新数据库并设置" old_password&# 34;到当前密码。