代码作业-用户申请重置密码后端接口

来源:4-10 代码作业-忘记密码页面&接口

君莫惜555

2020-11-09 19:20:16

# 相关代码如下:


async forget (ctx) {

    const { body } = ctx.request

    const sid = body.sid

    const code = body.captcha

    const username = body.username

    /**

           * 1. 验证验证码是否过期或是否正确

           * 2. 以邮箱为字段查询数据库,如果数据库中存在该邮箱,返回用户基本信息,如果不存在向前端返回错误

           * 3. 发送验证邮件

           */

    if (await utils.checkCode(sid, code)) {

        if (!username) {

                ctx.body = {

                    code: 500,

                    msg: '用户信息输入不正确'

                }

            return

        }

        const user = await User.findOne({ username: username })

        if (user && user.password) {

                // 系统中存在该用户

                const key = uuidv4()

                setValue(key, jwt.sign({ _id: user._id }, JWT_SECRET, { expiresIn: '30m' }), 30 * 60)

                const result = await send({

                      type: 'reset',

                      data: {

                        key: key

                      },

                      expire: moment().add(30, 'minutes').format('YYYY-MM-DD HH:mm:ss'),

                      email: body.username,

                      user: user.nickName

                })

                if (result) {

                      ctx.body = {

                            status: 200,

                            data: result,

                            msg: '邮件发送成功'

                     }

                }

            } else {

                ctx.body = {

                        code: 500,

                        msg: '该邮箱还没有注册,是否使用该邮箱注册'

                 }

             }

    } else {

          ctx.body = {

            status: 401,

            msg: ['图片验证码不正确']

          }

    }

}



写回答

1回答

Brian

2020-11-11

作业批改:100 分

作业评语:业精于勤,荒于嬉;行成于思,毁于随。


小伙伴,真心不错。这个逻辑不复杂,平时就要这样多动手。


0

0 学习 · 1842 问题

查看课程