有没有办法手动调用payloadcms的forgetPassword函数?

问题描述 投票:0回答:1

现在我正在使用 Payloadcms 创建我的 Web 应用程序。
你知道,它支持内置密码恢复,可以像这样使用:

forgotPassword: {
    generateEmailHTML: async ({ req, token, user }: any) => {
        const url = `${process.env.NEXT_PUBLIC_SERVER_URL}/auth/reset-password?token=${token}`
        console.log('URL', url)

        // return `Hey ${user.email}, reset your password by clicking here: ${url}`
        const email = SendVerifyEmailTemplate({ email: user.email, url })
        const ReactDOMServer = (await import('react-dom/server')).default
        return ReactDOMServer.renderToString(email);
    },
},

它工作正常,但我担心的是攻击者可以使用这个 api 进行电子邮件轰炸。
所以我想向这个端点添加一些验证。
但是这个内置服务没有验证选项,所以我想我应该自己创建一个端点。
因此我需要知道如何使用payloadcms模块的forgetPassword函数。
我可以像这样导入函数:

import { forgotPasswordOperation } from 'payload/operations';

如果您已经遇到过这个问题并解决了,我需要您的帮助。

typescript payload-cms
1个回答
0
投票

我自己解决了。

const token = await payload.forgotPassword({
    collection: 'users',
    data: {
        email: accountInfo.email,
    },
    disableEmail: true,
    req: req
})

BasePayload 类型中有一个忘记密码的函数。 您可以选择启用/禁用电子邮件功能。

© www.soinside.com 2019 - 2024. All rights reserved.