예제 #1
0
파일: users.py 프로젝트: waleedusman/orams
def reset_password(token):
    json_payload = get_json_from_request()

    required_keys = ['password', 'confirmPassword', 'email_address', 'user_id']

    if not set(required_keys).issubset(json_payload):
        return jsonify(
            message='One or more required args were missing from the request'
        ), 400

    if json_payload['password'] != json_payload['confirmPassword']:
        return jsonify(message="Passwords do not match"), 400

    data = decode_reset_password_token(token.encode())

    if data.get('error', None) is not None:
        return jsonify(
            message="An error occured decoding the reset password token"), 400

    try:
        update_user_details(password=json_payload['password'],
                            user_id=json_payload['user_id'])

        return jsonify(
            message="User with email {}, successfully updated their password".
            format(json_payload['email_address']),
            email_address=json_payload['email_address']), 200

    except Exception as error:
        return jsonify(message=error.message), 400
예제 #2
0
파일: users.py 프로젝트: das2011/orams
def update_user(**kwargs):
    try:
        user = update_user_details(**kwargs)
        user_detail = UserView(user)
        return jsonify(user_detail.__dict__)
    except ValueError as error:
        return jsonify(message=error.message), 400
예제 #3
0
def reset_password(token):
    email_address_encoded = request.args.get('e') or ''
    if not email_address_encoded:
        return jsonify(message='You must provide an email address when resetting a password'), 400
    email_address = unquote_plus(email_address_encoded)

    json_payload = get_json_from_request()

    required_keys = ['password', 'confirmPassword']

    if not set(required_keys).issubset(json_payload):
        return jsonify(message='One or more required args were missing from the request'), 400

    if json_payload['password'] != json_payload['confirmPassword']:
        return jsonify(message="Passwords do not match"), 400

    try:
        token_age_limit = key_values_service.get_by_key('password_reset_token_age_limit')
        claim = user_claims_service.validate_and_update_claim(
            type='password_reset',
            token=token,
            email_address=email_address,
            age=token_age_limit['data']['age']
        )
        if not claim:
            return jsonify(message='Invalid token'), 400
    except Exception as error:
        return jsonify(message='Invalid token'), 400

    try:
        publish_tasks.user_claim.delay(
            publish_tasks.compress_user_claim(claim),
            'updated'
        )

        update_user_details(
            password=json_payload['password'],
            user_id=claim.data.get('user_id', None)
        )

        return jsonify(
            message="User with email {}, successfully updated their password".format(email_address),
            email_address=email_address
        ), 200

    except Exception as error:
        return jsonify(message=error.message), 400