Esempio n. 1
0
    async def post(self, *args, **kwargs):
        return_data = {}
        params = self.request.body.decode('utf-8')
        params = json.loads(params)
        register_form = RegisterForm.from_json(params)  # wtforms_json用猴子补丁实现的
        if register_form.validate():
            mobile = register_form.mobile.data
            code = register_form.code.data
            password = register_form.password.data

            # 验证码是否正确
            redis_key = f'{mobile}_{code}'  # redis查询的是内存非常快,所以没有必要去使用异步的redis。后期可以用aioredis实现一下异步的redis
            if not self.redis_conn.get(redis_key):
                self.set_status(400)
                return_data['code'] = '验证码错误或者失效'
            else:
                # 验证用户是否存在
                try:
                    existed_users = await self.application.objects.get(User, mobile=mobile)
                    self.set_status(400)
                    return_data['code'] = '用户已存在'
                except User.DoesNotExist as e:
                    user = await self.application.objects.create(User, mobile=mobile, password=password)
                    return_data['id'] = user.id
        else:
            self.set_status(400)
            for field in register_form.erros:
                return_data[field] = register_form[field][0]
        self.finish(return_data)
Esempio n. 2
0
    async def post(self, *args, **kwargs):
        param = self.request.body.decode('utf-8')
        param = json.loads(param)
        form = RegisterForm.from_json(param)
        account = form.account.data
        code = form.code.data
        password = form.password.data

        if form.validate():
            if not self.redis_conn.get(f'{account}_{code}'):
                self.set_status(400)
                return self.json(JsonResponse(code=10006))

            else:
                try:
                    await self.application.objects.get(User, account=account)
                    self.set_status(400)
                    return self.json(JsonResponse(code=10007))

                except User.DoesNotExist:
                    user = await self.application.objects.create(User, account=account, password=password)
                    return self.json(
                        JsonResponse(code=1, data={'id': user.id}))
        else:
            return self.json(JsonResponse(code=10004, msg=form.errors))
Esempio n. 3
0
    async def post(self, *args, **kwargs):
        req_data = self.request.body.decode("utf-8")
        req_data = json.loads(req_data)
        nick_name = req_data.get("nick_name")
        regester_form = RegisterForm.from_json(req_data)
        res_data = {}
        if regester_form.validate():
            phone_num = regester_form.phone_num.data
            code = regester_form.code.data
            password = regester_form.password.data
            key = "{}:{}".format(phone_num, code)
            if not self.redis_conn.get(key):
                self.set_status(400)
                res_data["content"] = "验证码错误或已失效"
            else:
                try:
                    await self.application.objects.get(
                        User, phone_num=phone_num
                    )
                    self.set_status(400)
                    res_data["content"] = "用于已存在"
                except User.DoesNotExist:
                    user_obj = await self.application.objects.create(
                        User, phone_num=phone_num, password=password,
                        nick_name=nick_name
                    )
                    res_data["id"] = user_obj.id
                    res_data["content"] = "注册成功"

        else:
            res_data["content"] = regester_form.errors
        self.finish(res_data)
Esempio n. 4
0
    async def post(self, *args, **kwargs):
        re_data = {}

        params = self.request.body.decode("utf8")
        params = json.loads(params)
        # from_json为猴子补丁加入的新方法,解决json传输
        register_form = RegisterForm.from_json(params)
        if register_form.validate():
            mobile = register_form.mobile.data
            code = register_form.code.data
            password = register_form.password.data

            # 验证码是否正确
            redis_key = "{}_{}".format(mobile, code)
            if not self.redis_conn.get(redis_key):
                self.set_status(400)
                re_data["code"] = "验证码错误或者失效"
            else:
                # 验证用户是否存在
                try:
                    existed_users = await self.application.objects.get(User, mobile=mobile)
                    self.set_status(400)
                    re_data["mobile"] = "用户已经存在"
                except User.DoesNotExist as e:
                    user = await self.application.objects.create(User, mobile=mobile, password=password)
                    re_data["id"] = user.id
        else:
            self.set_status(400)
            for field in register_form.erros:
                re_data[field] = register_form.errors[field][0]

        self.finish(re_data)
Esempio n. 5
0
    async def post(self, *args, **kwargs):
        re_data = {}
        param = self.request.body.decode('utf8')
        register_form = RegisterForm.from_json(json.loads(param))
        if register_form.validate():
            mobile = register_form.mobile.data
            code = register_form.code.data
            password = register_form.password.data

            # 验证验证码
            redis_key = f'{mobile}_{code}'
            if not self.redis_conn.get(redis_key):
                self.set_status(400)
                re_data['code'] = '验证码错误或失效'
            else:
                # 验证用户是否存在
                try:
                    existed_user = await self.application.objects.get(
                        User, mobile=mobile)
                    re_data['mobile'] = '用户已经存在'
                except User.DoesNotExist as e:
                    user = await self.application.objects.create(
                        User, mobile=mobile, password=password)
                    re_data['id'] = user.id
        else:
            self.set_status(400)
            re_data = register_form.errors

        self.write(re_data)
Esempio n. 6
0
    async def post(self, *args, **kwargs):
        param = self.request.body.decode('utf-8')
        param = json.loads(param)
        form = RegisterForm.from_json(param)
        account = form.account.data
        code = form.code.data
        password = form.password.data

        if account is None:
            return self.json(Result(code=10080, msg="参数有误, 不可缺少account参数"))
        if code is None:
            return self.json(Result(code=10080, msg="参数有误, 不可缺少code参数"))
        if password is None:
            return self.json(Result(code=10080, msg="参数有误, 不可缺少password参数"))

        if form.validate():
            if not self.redis_conn.get(f'{account}_{code}'):
                return self.json(Result(code=10018, msg="验证码失效或不正确!"))

            else:
                try:
                    existed_user = await self.application.objects.get(
                        User, account=account)
                    return self.json(Result(code=10020, msg='这个账号已经被注册!'))

                # 没有创建user表
                except User.DoesNotExist:
                    user = await self.application.objects.create(
                        User, account=account, password=password)
                    return self.json(
                        Result(code=1, msg='账号注册成功', data={'id': user.id}))
        else:
            return self.json(Result(code=10090, msg=form.errors))
Esempio n. 7
0
    async def post(self, *args, **kwargs):

        re_data = {}

        params = self.request.body.decode('utf-8')
        params = json.loads(params)

        register_form = RegisterForm.from_json(params)

        if register_form.validate():
            # 取出相关数据
            mobile = register_form.mobile.data
            code = register_form.code.data
            password = register_form.password.data

            # 校验验证码
            redis_key = f'{mobile}_{code}'

            if self.redis_conn.get(redis_key):
                # 对用户是否存在进行校验 使用 get 方法 不存在则报错
                try:
                    existed_user = await self.application.objects.get(
                        User, mobile=mobile)
                    self.set_status(400)
                    re_data["mobile"] = "用户已存在"

                except User.DoesNotExist as e:
                    user = await self.application.objects.create(
                        User, mobile=mobile, password=password)
                    re_data["id"] = user.id

            else:

                self.set_status(400)
                re_data['code'] = '验证码错误或者已失效!'

        else:
            self.set_status(400)
            for field in register_form.errors:
                re_data[field] = register_form.errors[field][0]

        self.finish(re_data)
Esempio n. 8
0
    async def post(self, *args, **kwargs):
        param = self.request.body.decode('utf8')

        re_data = {}

        param = json.loads(param)
        # 注意这里
        register_form = RegisterForm.from_json(param)
        if register_form.validate():
            mobile = register_form.mobile.data
            code = register_form.code.data
            password = register_form.password.data

            # 验证码是否正确
            redis_key = "{}_{}".format(mobile, code)
            if not self.redis_conn.get(redis_key):
                self.set_status(400)
                re_data['code'] = "验证码错误"

            else:
                try:
                    # 验证用户是否存在
                    existed_users = await self.application.objects.get(
                        User, mobile=mobile)
                    self.set_status(400)
                    re_data['mobile'] = '用户已存在'
                except User.DoesNotExist as e:
                    user = await self.application.objects.create(
                        User, mobile=mobile, password=password)
                    re_data['id'] = user.id
        else:
            self.set_status(400)
            for field in register_form.errors:
                re_data[field] = register_form[field][0]

        self.finish(re_data)
Esempio n. 9
0
    async def post(self, *args, **kwargs):
        res = {}
        data = self.request.body.decode('utf-8')
        data = json.loads(data)
        form = RegisterForm.from_json(data)
        if form.validate():
            email = form.email.data
            code = form.code.data
            password1 = form.password1.data
            password2 = form.password2.data

            #验证两次输入密码是否正确
            if password1 != password2:
                res['password1'] = '两次输入密码不一致'
                self.set_status(400)

            #验证验证码是否正确

            #redis方式验证
            #redis_key = "{}_{}".format(email, code)
            # if not self.redis_conn.get(redis_key):
            #     print('验证码错误')
            #     self.set_status(400)
            #     res['code'] = '验证码错误或者失效'

            #mysql方式验证(验证码5分钟内有效)
            try:
                #按照最新的时间顺序取出该邮箱对应的第一条验证码
                query = VerifyEmailCode.select().where(
                    VerifyEmailCode.email == email).order_by(
                        VerifyEmailCode.add_time.desc())
                qs = await self.application.objects.execute(query)
                five_mins = datetime.now() - timedelta(
                    hours=0, minutes=5, seconds=0)

                #5分钟有效期
                if five_mins > qs[0].add_time:
                    res['code'] = '验证码过期,请重新发送!'
                    self.set_status(400)

                #比对失败
                if qs[0].code != code:
                    res['code'] = '验证码错误!'
                    self.set_status(400)
                #比对成功
                else:
                    #创建用户,username置为email
                    user = await self.application.objects.create(
                        UserProfile,
                        email=email,
                        username=email,
                        password=password1)
                    res = {
                        'id': user.id,
                        'username': user.username,
                        'email': user.email,
                        'gender': user.gender,
                        'add_time': user.add_time  #datetime不能直接用json序列化
                    }
                    self.set_status(201)  #创建成功,201 CREATED

            except VerifyEmailCode.DoesNotExist:
                res['code'] = '请发送验证码'
                self.set_status(400)

        else:
            self.set_status(400)
            for field in form.errors:
                res[field] = form.errors[field]

        self.finish(json.dumps(res, default=utils.json_serial))