Пример #1
0
    def post(self):
        verify_post_parser = reqparse.RequestParser()
        verify_post_parser.add_argument(
            'token',
            type=str,
            required=True
        )
        verify_post_parser.add_argument(
            'verify_token',
            type=str,
            required=True
        )
        args = verify_post_parser.parse_args()

        user = User.verify_auth_token(args['token'])
        if not user:
            raise InvalidToken()

        if user.confirmed:
            raise DuplicateInfo('邮箱已绑定')

        if user.confirm(args['verify_token']):
            return {'message': '邮箱绑定成功'}, 200
        else:
            return InvalidToken('verify token')
Пример #2
0
    def post(self):
        eval_imgs_post_parser = reqparse.RequestParser()
        eval_imgs_post_parser.add_argument(
            'token',
            type=str,
            required=True
        )
        args = eval_imgs_post_parser.parse_args()

        user = User.verify_auth_token(args['token'])

        if not user:
            raise InvalidToken()

        if 'photo' in request.files:
            filename = hashlib.md5(str(user.nickname).encode('utf-8') +
                                   str(time.time()).encode('utf-8')).hexdigest()[:10]
            # If it ends with a dot, the file’s extension will be appended to the end.
            img = photos.save(request.files['photo'], name=filename + '.')
            img_url = photos.url(img)

            user.avatar_url = img_url
            db.session.add(user)
            db.session.commit()

            return {'avatar_url': img_url}, 200
Пример #3
0
    def post(self):
        args = email_post_parser.parse_args()

        email = email_type(args['email'])

        user = User.verify_auth_token(args['token'])
        if not user:
            raise InvalidToken()

        dup_email = User.query.filter_by(email=email).first()
        if dup_email:
            raise DuplicateInfo('该邮箱已被绑定')

        if user.email:
            user.confirmed = False

        user.email = email
        db.session.add(user)
        db.session.commit()
        token = user.generate_confirmation_token().decode()

        send_email(email, '确认你的邮件',
                   'email/confirm', token=token)

        return {'message': '确认邮件已发送'}, 200
Пример #4
0
    def post(self):
        args = user_info_post_parser.parse_args()

        user = User.verify_auth_token(args['token'])
        if not user:
            raise InvalidToken()

        user.sex = args['sex']
        user.birth_date = args.get('birth_date')
        user.hobby = args.get('hobby')

        db.session.add(user)
        db.session.commit()

        return {'message': 'ok'}, 200
Пример #5
0
    def post(self):
        post_parser = reqparse.RequestParser()
        post_parser.add_argument('token', type=str, required=True)
        args = post_parser.parse_args()

        user = User.verify_auth_token(args['token'])
        if not user:
            raise InvalidToken()

        # 更新 uuid,这样原来的 token 解析出来的 uuid 是旧的
        # 判定此时 token 已经失效
        user.uid = str(uuid.uuid4())
        db.session.add(user)
        db.session.commit()

        return {'message': 'ok'}, 200
Пример #6
0
    def delete(self, comment_id=None):

        args = comment_delete_parser.parse_args()
        user = User.verify_auth_token(args['token'])
        if not user:
            raise InvalidToken()

        if not comment_id:
            raise LackOfInfo('评论 id')

        comment = Comment.query.get(comment_id)
        if not comment:
            raise ObjectNotFound('评论')

        db.session.delete(comment)
        db.session.commit()

        return {'message': 'ok'}, 200
Пример #7
0
    def post(self):  # 获得自己的信息
        post_parser = reqparse.RequestParser()
        post_parser.add_argument('token', type=str, required=True)
        args = post_parser.parse_args()

        user = User.verify_auth_token(args['token'])
        if not user:
            raise InvalidToken()

        result = dict()
        result['id'] = user.id
        result['nickname'] = user.nickname
        result['email'] = user.email
        result['avatar_url'] = user.avatar_url
        result['sex'] = user.sex
        result['birth_date'] = user.birth_date
        result['hobby'] = user.hobby

        return result, 200
Пример #8
0
    def post(self):
        args = comment_post_parser.parse_args()
        user = User.verify_auth_token(args['token'])

        if not user:
            raise InvalidToken()

        dup_comment = Comment.query.filter_by(content=args['content']).first()
        if dup_comment and dup_comment.user_id == user.id:
            raise DuplicateInfo('评论重复')

        comment = Comment()
        comment.user_id = user.id
        comment.article_id = args['article_id']
        comment.content = args['content']

        db.session.add(comment)
        db.session.commit()

        return {'message': 'ok'}, 200
Пример #9
0
    def post(self):

        args = forget_post_parser.parse_args()

        user = User.query.filter_by(nickname=args['nickname']).first()
        if not user:
            raise ObjectNotFound('用户不存在')

        if not user.confirmed:
            raise WrongInfo('邮箱未确认,无法重置密码')

        if user.email != args['email']:
            raise WrongInfo('邮箱或用户名错误')

        if Verify.confirm(args['forget_token'], args['nickname'],
                          args['email']):
            user.password = args['new_password']
            db.session.add(user)
            db.session.commit()
            return {'message': '密码重置成功'}, 200
        else:
            raise InvalidToken('verify token')
Пример #10
0
    def post(self):
        verify_post_parser = reqparse.RequestParser()
        verify_post_parser.add_argument('token', type=str, required=True)
        verify_post_parser.add_argument('old_password',
                                        type=str,
                                        required=True)
        verify_post_parser.add_argument('new_password',
                                        type=password_type,
                                        required=True)
        args = verify_post_parser.parse_args()

        user = User.verify_auth_token(args['token'])
        if not user:
            raise InvalidToken()

        if not user.verify_password(args['old_password']):
            raise WrongInfo('密码错误')

        user.password = args['new_password']
        db.session.add(user)
        db.session.commit()

        return {'message': 'ok'}, 200