Пример #1
0
def register_phone():
    """用户手机注册 (GET|POST)

    :uri: /users/register_phone
    :param phone: 手机号
    :param password: 密码
    :param nickname: 昵称
    :param code: 短信验证码
    :param gender: 性别(可选)(1:男, 2:女)
    :returns: {'user': object, 'ut': string}
    """
    params = request.values
    phone = params.get('phone', None)
    code = params.get('code', None)
    password = params.get("password", None)
    nickname = params.get("nickname", None)
    gender = params.get("gender", 0)
    if not phone or not code or not password or not nickname:
        return error.InvalidArguments

    invalid_error = User.invalid_password(password)
    if invalid_error:
        return invalid_error

    invalid_error = User.invalid_nickname(nickname)
    if invalid_error:
        return invalid_error

    if User.get_by_phone(phone):
        return error.UserExists

    if not SMS.verify_code(phone, code):
        return error.VerifyCodeFailed

    user = User.init()
    name = '$mb$%s%s' % (phone[-4:], random.randint(1000, 9999))
    user.name = name
    user.phone = phone
    user.nickname = nickname
    user.gender = gender

    salt = os.urandom(const.PWD_HASH_LEN)
    pwd = User.gen_pwd_hash(password, salt)
    user._salt = Binary(salt)
    user._password = Binary(pwd)
    uid = user.create_model()
    new_user = User.get_one(uid)
    token = User.gen_token(str(uid))
    return {'user': new_user.format(), 'ut': token}
Пример #2
0
def register():
    """用户注册 (GET|POST)

    :uri: /users/register
    :param name: 用户名
    :param password: 密码
    :param nickname: 昵称
    :returns: {'user': object, 'ut': string}
    """
    params = request.values.to_dict()
    name = params.get("name", None)
    # delete password from data so that we don't save it to mongo
    password = str(params.pop("password", None))
    nickname = params.get('nickname', None)
    if not name or not password or not nickname:
        return error.InvalidArguments

    invalid_error = User.invalid_password(password)
    if invalid_error:
        return invalid_error

    invalid_error = User.invalid_nickname(nickname)
    if invalid_error:
        return invalid_error

    if User.get_by_name(name):
        return error.UserExists

    user = User.init()
    user.update(params)

    salt = os.urandom(const.PWD_HASH_LEN)
    pwd = User.gen_pwd_hash(password, salt)
    user._salt = Binary(salt)
    user._password = Binary(pwd)
    uid = user.create_model()
    new_user = User.get_one(uid)

    # 初始化用户任务
    UserTask.create_and_init_user_tasks(str(new_user._id))

    token = User.gen_token(str(uid))
    return {'user': new_user.format(), 'ut': token}