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



我正在使用FosUserBundle来管理我的网络用户,并通过API登录移动应用程序。 我有一个resetPasswordActionAPI 方法来启用应用程序中的密码重置。

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

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

我尝试创建事件侦听器,但RESETTING_RESET_COMPLETED收到FilterUserResponseEvent,所以我只能捕获电子邮件和新密码。

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

谢谢。

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

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

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

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

然后在事件侦听器中,您必须从 User 实体获取旧密码,执行 API 帖子,如果所有这些都无一例外,则更新数据库并将"old_password"设置为当前密码。

相关内容

最新更新