当我尝试在已存在的RegisterR上注册电子邮件时,我发现用户已经存在,而不是显示错误消息,它会向给定的电子邮件地址发送电子邮件确认请求,就像我问的那样用于密码重置。
浏览完资源后,我发现registerHelper
会检查电子邮件是否存在,如果存在,即使已经验证过,也会发送验证邮件。
-- [...]
mecreds <- lift $ getEmailCreds identifier
registerCreds <-
case mecreds of
Just (EmailCreds lid _ _ (Just key) email) -> return $ Just (lid, key, email)
Just (EmailCreds lid _ _ Nothing email) -> do
key <- liftIO $ randomKey y
lift $ setVerifyKey lid key
return $ Just (lid, key, email)
Nothing
| allowUsername -> return Nothing
| otherwise -> do
key <- liftIO $ randomKey y
lid <- lift $ addUnverified identifier key
return $ Just (lid, key, identifier)
case registerCreds of
Nothing -> loginErrorMessageI dest (Msg.IdentifierNotFound identifier)
Just (lid, verKey, email) -> do
render <- getUrlRender
let verUrl = render $ verify (toPathPiece lid) verKey
lift $ sendVerifyEmail email verKey verUrl
lift $ confirmationEmailSentResponse identifier
-- [...]
来源:https://hackage.haskell.org/package/yesod-auth-1.4.3.1/docs/src/Yesod-Auth-Email.html#registerHelper
由于registerCreds
是Just
,当电子邮件存在并且有密钥时,它会再次向用户发送验证电子邮件,以便他/她可以将其用作密码重置链接。
我的问题是:
Auth.Email
。Yesod.Auth.Email.postRegisterR
- 我在哪里可以检查电子邮件地址是否已存在,并通知用户? 编辑:事实证明我正在查看更旧版本的来源:我更新了问题。在yesod-auth-1.4.3
中,此代码位于registerHelper
,而不是postRegisterR
。