Exemple #1
0
def send_user_reset_password():
    email, errors = email_data_request_schema.load(request.get_json())

    user_to_send_to = get_user_by_email(email['email'])

    if user_to_send_to.blocked:
        return jsonify({'message': 'cannot reset password: user blocked'}), 400

    template = dao_get_template_by_id(current_app.config['PASSWORD_RESET_TEMPLATE_ID'])
    service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
    saved_notification = persist_notification(
        template_id=template.id,
        template_version=template.version,
        recipient=email['email'],
        service=service,
        personalisation={
            'user_name': user_to_send_to.name,
            'url': _create_reset_password_url(user_to_send_to.email_address)
        },
        notification_type=template.template_type,
        api_key_id=None,
        key_type=KEY_TYPE_NORMAL,
        reply_to_text=service.get_default_reply_to_email_address()
    )

    send_notification_to_queue(saved_notification, False, queue=QueueNames.NOTIFY)

    return jsonify({}), 204
Exemple #2
0
def populate_go_live(file_name):
    # 0 - count, 1- Link, 2- Service ID, 3- DEPT, 4- Service Name, 5- Main contact,
    # 6- Contact detail, 7-MOU, 8- LIVE date, 9- SMS, 10 - Email, 11 - Letters, 12 -CRM, 13 - Blue badge
    import csv
    print("Populate go live user and date")
    with open(file_name, 'r') as f:
        rows = csv.reader(
            f,
            quoting=csv.QUOTE_MINIMAL,
            skipinitialspace=True,
        )
        print(next(rows))  # ignore header row
        for index, row in enumerate(rows):
            print(index, row)
            service_id = row[2]
            go_live_email = row[6]
            go_live_date = datetime.strptime(row[8],
                                             '%d/%m/%Y') + timedelta(hours=12)
            print(service_id, go_live_email, go_live_date)
            try:
                if go_live_email:
                    go_live_user = get_user_by_email(go_live_email)
                else:
                    go_live_user = None
            except NoResultFound:
                print("No user found for email address: ", go_live_email)
                continue
            try:
                service = dao_fetch_service_by_id(service_id)
            except NoResultFound:
                print("No service found for: ", service_id)
                continue
            service.go_live_user = go_live_user
            service.go_live_at = go_live_date
            dao_update_service(service)
Exemple #3
0
def get_by_email():
    email = request.args.get('email')
    if not email:
        error = 'Invalid request. Email query string param required'
        raise InvalidRequest(error, status_code=400)
    fetched_user = get_user_by_email(email)
    result = fetched_user.serialize()
    return jsonify(data=result)
Exemple #4
0
def get_by_email():
    email = request.args.get('email')
    if not email:
        error = 'Invalid request. Email query string param required'
        raise InvalidRequest(error, status_code=400)
    fetched_user = get_user_by_email(email)
    result = user_schema.dump(fetched_user)

    return jsonify(data=result.data)
Exemple #5
0
def fetch_user_by_email():

    email, errors = email_data_request_schema.load(request.get_json())
    if errors:
        raise InvalidRequest(message=errors, status_code=400)

    fetched_user = get_user_by_email(email['email'])
    result = fetched_user.serialize()
    return jsonify(data=result)
Exemple #6
0
def send_support_email(user_id):
    data, errors = support_email_data_schema.load(request.get_json())

    data['tags'] = ['z_skip_opsgenie', 'z_skip_urgent_escalation']
    try:
        user = get_user_by_email(data['email'])
        has_live_services = any([not s.restricted for s in user.services])
        if has_live_services:
            data['tags'] = []
    except NoResultFound:
        pass

    status_code = Freshdesk.create_ticket(data)

    return jsonify({"status_code": status_code}), 204
Exemple #7
0
def send_user_reset_password():
    email, errors = email_data_request_schema.load(request.get_json())

    user_to_send_to = get_user_by_email(email['email'])

    template = dao_get_template_by_id(current_app.config['PASSWORD_RESET_TEMPLATE_ID'])
    message = {
        'template': str(template.id),
        'template_version': template.version,
        'to': user_to_send_to.email_address,
        'personalisation': {
            'user_name': user_to_send_to.name,
            'url': _create_reset_password_url(user_to_send_to.email_address)
        }
    }
    send_email.apply_async([current_app.config['NOTIFY_SERVICE_ID'],
                            str(uuid.uuid4()),
                            encryption.encrypt(message),
                            datetime.utcnow().strftime(DATETIME_FORMAT)], queue='notify')

    return jsonify({}), 204
def login_with_password():
    if not is_feature_enabled(FeatureFlag.EMAIL_PASSWORD_LOGIN_ENABLED):
        return jsonify(result='error', message="Not Implemented"), 501

    request_json = request.get_json()
    validate(request_json, password_login_request)

    try:
        fetched_user = get_user_by_email(request_json['email_address'])
    except NoResultFound:
        current_app.logger.info(
            f"No user was found with email address: {request_json['email_address']}"
        )
    else:
        if fetched_user.check_password(request_json['password']):
            jwt_token = create_access_token(identity=fetched_user)
            return jsonify(result='success', token=jwt_token), 200
        else:
            current_app.logger.info(
                f"wrong password for: {request_json['email_address']}")

    return jsonify(result='error', message='Failed to login'), 401
def test_get_user_by_email_is_case_insensitive(sample_user):
    email = sample_user.email_address
    user_from_db = get_user_by_email(email.upper())
    assert sample_user == user_from_db
def test_get_user_by_email(sample_user):
    user_from_db = get_user_by_email(sample_user.email_address)
    assert sample_user == user_from_db
def test_get_user_by_email_is_case_insensitive(sample_user):
    email = sample_user.email_address
    user_from_db = get_user_by_email(email.upper())
    assert sample_user == user_from_db
def test_get_user_by_email(sample_user):
    email = sample_user.email_address
    user_from_db = get_user_by_email(email)
    assert sample_user == user_from_db