networkteam/neos-passwordreset

一个Neos包,允许用户在前端重置密码。

2.0.3 2024-03-05 08:12 UTC

README

允许用户在前端重置密码。

安装

$ composer require networkteam/neos-passwordreset
$ ./flow doctrine:migrate

配置

覆盖模板路径以指向您自己的模板。这些可以从原始模板复制。它们来自postmarkapp.com的优秀项目。

Networkteam:
  Neos:
    PasswordReset:
      authenticationProviders:
        - Networkteam.Neos.FrontendLogin:Frontend
      senderAddress: 'no-reply@organisation.org'
      templatePaths:
        noAccountMailHtml: 'resource://Networkteam.Neos.PasswordReset/Private/Templates/Mail/password-reset-help.html'
        noAccountMailTxt: 'resource://Networkteam.Neos.PasswordReset/Private/Templates/Mail/password-reset-help.txt'
        resetPasswordMailHtml: 'resource://Networkteam.Neos.PasswordReset/Private/Templates/Mail/password-reset-link.html'
        resetPasswordMailTxt: 'resource://Networkteam.Neos.PasswordReset/Private/Templates/Mail/password-reset-link.txt'

配置 authenticationProviders 是一个数组,指定重置密码可能的提供者。当提供多个提供者时,会为每个提供者测试电子邮件地址,并为找到的第一个账户创建邮件。

策略

为了使密码更改功能正常工作,您必须将密码更改权限(Networkteam.Neos.PasswordReset:PasswordChange)添加到成员区域角色。如果您使用networkteam FrontendLogin 包,它看起来如下

Policy.yaml

roles:
  'Networkteam.Neos.FrontendLogin:MemberArea':
    abstract: true
    privileges:
      - privilegeTarget: 'Networkteam.Neos.PasswordReset:PasswordChange'
        permission: GRANT

信号

此包为某些事件提供 信号

requestResetAction

信息流

如果用户请求新密码,则会向给定地址发送电子邮件。如果找不到与电子邮件地址相关联的账户,则会发送包含此信息的电子邮件,通知用户他可能已使用其他电子邮件地址为此账户。

如果找到账户,则生成一个令牌以识别请求,并向用户发送电子邮件。当用户单击电子邮件中的链接并提交显示的新密码表单时,将验证令牌。

需求/不足之处

账户需要有一个电子邮件地址作为标识符,即用户名。这是由于Neos中电子地址处理的性质所必需的。还应该没有具有相同电子邮件地址但不同认证提供者的账户。这是可能的,但只有对于第一个配置的认证提供者,重置才可行。

样式

为了将表单调整为您的应用程序/网站,请覆盖融合模板。每个表单/响应都有一个。

  • RequestForm 是最初显示以输入电子邮件地址的表单
  • RequestAccepted 在发送电子邮件后显示
  • ResetForm 是显示以提供新密码的表单
  • ResetSucceeded 是密码重置完成后执行的融合

模板中可用变量

- node # the node the form was sent from
- email # the email provided in the form
- operating_system # a string from the referer
- browser_name # a string from the referer