コード例 #1
0
def change_info(message):
    """
    修改个人信息
    :return:
    """
    if message['code'] != Code.SUCCESS.value:
        return jsonify(message)
    params = request.values.to_dict()
    passwords = set_password(params['password'])
    sys_user = SysUser(params['username'], passwords, params['email'],
                       params['avatar'])
    result = SysUser.update(sys_user)
    if result is None:
        # 为空说明存入数据库没有报错
        sys_user = SysUser.get_info(params['username'])
        token = Verificate.encode_auth_token(
            sys_user.id, sys_user.last_login.strftime("%Y-%m-%d %H:%M:%S"))
        data = {
            'info': {
                'username': sys_user.username,
                'password': sys_user.password,
                'email': sys_user.email,
                'avatar': sys_user.avatar
            },
            'token': token.decode()
        }
        return jsonify(
            response.return_message(data, Message.SUCCESS.value,
                                    Code.SUCCESS.value))
    else:
        return jsonify(
            response.return_message(None, Message.BAD_REQUEST.value,
                                    Code.BAD_REQUEST.value))
コード例 #2
0
def verify():
    params = request.values.to_dict()
    enter_username = params['username']
    enter_email = params['email']

    if SysUser.verify(enter_username, enter_email) is True:
        # 获取毫秒级时间戳
        t = time.time()
        ms_t = int(round(t * 1000))
        # 将邮箱前两位设为*
        '''
            re.sub()有5个参数,三个必选参数pattern,repl,string;两个可选参数count,flags
            re.sub(pattern,repl,string,count,flags)
            pattern:表示正则表达式中的模式字符串;
            repl:被替换的字符串,或者是一个方法(既可以是字符串,也可以是函数);
            当repl为字符串的时候,也就是需要 将string中与pattern匹配的字符串都替换成repl
            当repl为方法的时候,就必须是一个带有一个参数,且参数为MatchObject类型的方法,该方法需要返回一个字符串。 
            string:要被处理的,要被替换的字符串;
            count:指的是最大的可以被替换的匹配到的字符串的个数,默认为0,就是所有匹配到的字符串。 
            flgas:标志位
         '''
        reset_email1 = re.sub(enter_email[:2], '**', enter_email)

        # .encode() :用来转换成bytes数组
        sid = base64.b64encode(
            (enter_username + str(ms_t) + reset_email1).encode()).decode()
        print(sid)
        return CommonUtil.send_email('*****@*****.**', sid)
    else:
        return jsonify(
            response.return_message(data="test",
                                    msg=Message.VERIFY_FAILED.value,
                                    code=Code.BAD_REQUEST.value))
コード例 #3
0
def upload(message):
    """
    上传图片
    :return: 返回图片链接
    """
    if message['code'] != Code.SUCCESS.value:
        return jsonify(message)
    base64_str = request.values.get('img')
    username = request.values.get('username')
    CommonUtil.handle_img(base64_str, 'avatar.webp')
    result = CommonUtil.upload_img('avatar.webp')
    if result is not None:
        result_avatar = SysUser.update_avatar(username, result)
        if result_avatar is None:
            return jsonify(
                response.return_message(data={
                    'image_url':
                    result,
                    'token':
                    Verificate.encode_auth_token(
                        message['data']['id'],
                        message['data']['last_login']).decode()
                },
                                        msg=Message.UPLOAD_SUCCESS.value,
                                        code=Code.SUCCESS.value))
    return jsonify(
        response.return_message(data=None,
                                msg=Message.UPLOAD_FAILED.value,
                                code=Code.BAD_REQUEST.value))
コード例 #4
0
def reset_pwd():
    """
       重置密码
       :return:
       """
    params = request.values.to_dict()
    passwords = None if params['password'] == '' else set_password(
        params['password'])
    sys_user = SysUser(params['username'], passwords, params['email'],
                       params['avatar'])
    result = SysUser.update(sys_user)
    if result is None:
        return jsonify(
            response.return_message(None, Message.SUCCESS.value,
                                    Code.SUCCESS.value))
    else:
        return jsonify(
            response.return_message(None, Message.BAD_REQUEST.value,
                                    Code.BAD_REQUEST.value))
コード例 #5
0
def register():
    """
    注册管理员
    :return: 用户基本信息
    """
    username = request.values.get('username')
    password = set_password(request.values.get('password'))
    email = request.values.get('email')
    avatar = request.values.get('avatar')
    sys_user = SysUser(username, password, email, avatar)
    result = SysUser.save(sys_user)
    if result is None:
        sys_user = SysUser.get_info(username)
        data = {"id": sys_user.id, "username": username}
        return jsonify(
            response.return_message(data, Message.REGISTER_SUCCESS.value,
                                    Code.SUCCESS.value))
    else:
        return jsonify(
            response.return_message(None, Message.REGISTER_FAILED.value,
                                    Code.BAD_REQUEST.value))
コード例 #6
0
def verify():
    """
    校验用户名和邮箱
    :return:
    """
    params = request.values.to_dict()
    enter_username = params['username']
    enter_email = params['email']
    # 用户信息校验成功
    if SysUser.verify(enter_username, enter_email) is True:
        # 获取毫秒级时间戳
        t = time.time()
        ms_t = int(round(t * 1000))
        # 将邮箱前两位设为*
        '''
            re.sub()有5个参数,三个必选参数pattern,repl,string;两个可选参数count,flags
            re.sub(pattern,repl,string,count,flags)
            pattern:表示正则表达式中的模式字符串;
            repl:被替换的字符串,或者是一个方法(既可以是字符串,也可以是函数);
            当repl为字符串的时候,也就是需要 将string中与pattern匹配的字符串都替换成repl
            当repl为方法的时候,就必须是一个带有一个参数,且参数为MatchObject类型的方法,该方法需要返回一个字符串。 
            string:要被处理的,要被替换的字符串;
            count:指的是最大的可以被替换的匹配到的字符串的个数,默认为0,就是所有匹配到的字符串。 
            flgas:标志位
         '''
        reset_email1 = re.sub(enter_email[:2], '**', enter_email)

        # 整合参数格式
        encrypt_params = 'username={}&email={}&timestamp={}'.format(
            enter_username, reset_email1, str(ms_t))
        # .encode() :用来转换成bytes数组
        sid = base64.b64encode(encrypt_params.encode()).decode()
        # 接收发送返回消息
        send_result = CommonUtil.send_email(enter_email, sid)
        # 如果发送失败,则会返回失败原因
        if send_result:
            return jsonify(
                response.return_message(data=send_result,
                                        msg=Message.EMAIL_SEND_FAILED.value,
                                        code=Code.FORBIDDEN.value))
        # 否则发送成功
        return jsonify(
            response.return_message(data=None,
                                    msg=Message.EMAIL_SEND_SUCCESS.value,
                                    code=Code.SUCCESS.value))
    # 用户信息校验失败
    else:
        return jsonify(
            response.return_message(data=None,
                                    msg=Message.VERIFY_FAILED.value,
                                    code=Code.BAD_REQUEST.value))
コード例 #7
0
def reset_pwd():
    """
    重置密码
    :return:
    """
    params = request.values.to_dict()
    password = params['password']
    if password is None or len(password) < Constant.PASSWORD_LENGTH.value:
        return jsonify(
            response.return_message(None,
                                    Message.PASSWORD_LENGTH_LESS_THAN.value,
                                    Code.BAD_REQUEST.value))
    passwords = set_password(password)
    result = SysUser.reset_password(params['username'], passwords)
    if result is None:
        return jsonify(
            response.return_message(None, Message.SUCCESS.value,
                                    Code.SUCCESS.value))
    else:
        return jsonify(
            response.return_message(None, Message.RESET_PASSWORD_FAILED.value,
                                    Code.BAD_REQUEST.value))
コード例 #8
0
def info_page(message):
    """
    用户信息页面
    :return:
    """
    if message['code'] != Code.SUCCESS.value:
        return jsonify(message)
    username = request.values.get('username')
    sys_user = SysUser.get_info(username)
    token = Verificate.encode_auth_token(
        sys_user.id, sys_user.last_login.strftime("%Y-%m-%d %H:%M:%S"))
    data = {
        'info': {
            'username': sys_user.username,
            'password': sys_user.password,
            'email': sys_user.email,
            'avatar': sys_user.avatar
        },
        'token': token.decode()
    }
    return jsonify(
        response.return_message(data, Message.SUCCESS.value,
                                Code.SUCCESS.value))