设计 - 如何允许在验证页面上更改未确认的电子邮件(更正)
Devise - how to allow change of unconfirmed email (correction) on verification page
我目前正在实施 Devise Confirmable,以便将用户发送到确认页面 "We've sent a validation email to , check it and click on the link"。
我被要求实现一项功能,允许用户在他们犯错时编辑该电子邮件,并更新和发送验证到新电子邮件。这仅适用于全新帐户,而不适用于其中包含任何数据的现有帐户。
用户在验证之前未登录,我正在向页面发送参数[:uuid],该页面在重新加载时会被擦除 - 这不是执行此操作的好方法。我想我可以使用 localstorage...
以前有人做过吗?
你可以做的是,
例如,
如果用户收到一封带有 link 的确认邮件,并且他点击了 link,此时您可能会有一个状态列,它会更改状态为 pending
.
现在,您可以允许用户更改他们的电子邮件,直到他们的帐户状态保持 pending
。此时,如果用户想返回并更改他的电子邮件,他将收到一封带有 link.
的确认邮件
假设我们有 approved
状态,只有在他登录应用程序后,状态才会从 pending
变为 approved
。
这有帮助吗?
我会在服务器的会话中存储未确认的帐户 ID:session[:unconfirmed_account] = 999
。然后,当用户未通过身份验证并且存在 session[:unconfirmed_account]
时,在页面上显示一个通知,其中包含帐户未确认的电子邮件和一个 link 或一个更改它的按钮。
我认为在会话中设置 :unconfirmed_account
变量的最佳方法是覆盖 Devise 的 Devise::RegistrationsController#create
方法。这是创建新的未确认帐户的地方。
class RegistrationsController < Devise::RegistrationsController
def create
super do |resource|
if resource.persisted?
session[:unconfirmed_account] = resource.id
end
end
end
end
有关如何自定义 Devise
控制器的信息可在此处找到 https://www.rubydoc.info/github/plataformatec/devise#Configuring_controllers
用户确认电子邮件并通过身份验证后,应删除会话变量。
class ConfirmationsController < Devise::ConfirmationsController
def show
super do |resource|
if resource.errors.empty?
session.delete(:unconfirmed_account)
end
end
end
end
当用户更新未确认的电子邮件时,应更新帐户并将新的确认邮件发送到新的电子邮件地址。这是给你实现的)
我目前正在实施 Devise Confirmable,以便将用户发送到确认页面 "We've sent a validation email to , check it and click on the link"。
我被要求实现一项功能,允许用户在他们犯错时编辑该电子邮件,并更新和发送验证到新电子邮件。这仅适用于全新帐户,而不适用于其中包含任何数据的现有帐户。
用户在验证之前未登录,我正在向页面发送参数[:uuid],该页面在重新加载时会被擦除 - 这不是执行此操作的好方法。我想我可以使用 localstorage...
以前有人做过吗?
你可以做的是,
例如,
如果用户收到一封带有 link 的确认邮件,并且他点击了 link,此时您可能会有一个状态列,它会更改状态为
pending
.现在,您可以允许用户更改他们的电子邮件,直到他们的帐户状态保持
pending
。此时,如果用户想返回并更改他的电子邮件,他将收到一封带有 link. 的确认邮件
假设我们有
approved
状态,只有在他登录应用程序后,状态才会从pending
变为approved
。
这有帮助吗?
我会在服务器的会话中存储未确认的帐户 ID:session[:unconfirmed_account] = 999
。然后,当用户未通过身份验证并且存在 session[:unconfirmed_account]
时,在页面上显示一个通知,其中包含帐户未确认的电子邮件和一个 link 或一个更改它的按钮。
我认为在会话中设置 :unconfirmed_account
变量的最佳方法是覆盖 Devise 的 Devise::RegistrationsController#create
方法。这是创建新的未确认帐户的地方。
class RegistrationsController < Devise::RegistrationsController
def create
super do |resource|
if resource.persisted?
session[:unconfirmed_account] = resource.id
end
end
end
end
有关如何自定义 Devise
控制器的信息可在此处找到 https://www.rubydoc.info/github/plataformatec/devise#Configuring_controllers
用户确认电子邮件并通过身份验证后,应删除会话变量。
class ConfirmationsController < Devise::ConfirmationsController
def show
super do |resource|
if resource.errors.empty?
session.delete(:unconfirmed_account)
end
end
end
end
当用户更新未确认的电子邮件时,应更新帐户并将新的确认邮件发送到新的电子邮件地址。这是给你实现的)