Exemplo n.º 1
0
def reset():
    form = ResetPasswordRequestForm()

    if current_user.is_authenticated:
        return redirect(url_for('dashboard'))

    if form.validate_on_submit():
        user = get_user_by_name(form.username.data)
        email = get_email_address_by_address(form.email_address.data)

        if user is None:
            flash('Account does not exist!')
            return redirect(url_for('reset'))

        if user.get_active_status() == False:
            flash('Account is disabled, contact support for assistance!')
            return redirect(url_for('reset'))

        if (user and email) and user.get_id() == email.get_owner_id():
            user.generate_reset_token()
            db.session.commit()
            logger.info("Generated User Token: %s", user.get_reset_token())
            session["reset_user_id"] = user.get_id()
            send_password_token(email.get_email_address()\
            , user.get_username(), user.get_reset_token())
            return redirect(url_for('reset_change_password'))
        else:
            flash('Invalid username or email address!')
            redirect(url_for('reset'))
    return render_template('reset.html', form=form)
Exemplo n.º 2
0
def update_email_password():
    logger.info("Entering update_email_password..")
    add_email_form = AddEmailForm()
    change_email_password_form = ChangeEmailPasswordForm()
    existing_addresses = get_existing_addresses_by_user_id(
        current_user.user_id)

    # -- Update Email Password submission START
    if change_email_password_form.is_submitted():
        logger.info("Address: %s",
                    change_email_password_form.email_address.data)
        email_addr = change_email_password_form.email_address.data
        email_address = get_email_address_by_address(email_addr)

        logger.info("Entering password change")
        if email_address is not None and email_address.get_active_status():
            if change_email_password_form.new_password.data:
                if test_mailbox_conn(email_addr\
                , change_email_password_form.new_password.data):
                    flash('Password successfully updated!', 'success')
                    email_address.set_email_password(\
                    change_email_password_form.new_password.data)
                    db.session.commit()
                else:
                    flash('Unable to connect to mailbox with new password!',
                          'error')
            else:
                logger.info("Password entered is empty.")
                flash('Password cannot be empty!.', 'error')
        else:
            logger.warn("Email address is inactive or None.")
            flash('Email address is inactive or does not exist', 'error')
        # -- Update Email Password submission END --

    return redirect(url_for('dash_email'))
def test_request_reset_password(client, db):
    # Creates a new user
    TEST_RESET_USER = '******'
    TEST_RESET_PASSWORD = '******'

    new_user = User(username=TEST_RESET_USER)
    new_user.set_password(TEST_RESET_PASSWORD)
    db.session.add(new_user)
    db.session.commit()

    # Logs in to user and add an email address and log out
    login_response = login(client, TEST_RESET_USER, TEST_RESET_PASSWORD)
    assert login_response.status_code == 200
    assert b'dashboard' in login_response.data

    MAIL_CREDS = get_server_mail_cred()
    TEST_EMAIL_ADDRESS = MAIL_CREDS[2]
    TEST_EMAIL_PASSWORD = MAIL_CREDS[3]
    response = add_mail(client, TEST_EMAIL_ADDRESS, TEST_EMAIL_PASSWORD)
    assert response.status_code == 200
    assert get_email_address_by_address(TEST_EMAIL_ADDRESS)
    assert b'*****@*****.**' in response.data

    logout(client)

    reset_response = request_reset_password(client, db, TEST_RESET_USER\
    , TEST_EMAIL_ADDRESS)
    # Assert redirected to update password page
    assert b'token' in reset_response.data
    # Assert token is generated
    assert get_user_by_name(TEST_RESET_USER).get_reset_token()
Exemplo n.º 4
0
def test_valid_disable_enable_daily_notif(client, db):
    USERNAME = '******'
    PASSWORD = '******'
    MAIL_CREDS = get_server_mail_cred()
    EMAIL_ADDR = MAIL_CREDS[0]

    login(client, USERNAME, PASSWORD)
    mail_id = get_email_id_by_mail_address(EMAIL_ADDR)
    response = enable_disable_notif(client, mail_id)
    updated_pref = get_email_address_by_address('*****@*****.**')\
    .get_notification_pref()
    assert response.status_code == 200
    assert updated_pref == True

    response = enable_disable_notif(client, mail_id)
    updated_pref = get_email_address_by_address('*****@*****.**')\
    .get_notification_pref()
    assert response.status_code == 200
    assert updated_pref == False
Exemplo n.º 5
0
def test_valid_add_mail(client, db):
    USERNAME = '******'
    PASSWORD = '******'
    MAIL_CREDS = get_server_mail_cred()
    EMAIL_ADDR = MAIL_CREDS[0]
    EMAIL_PASSWORD = MAIL_CREDS[1]

    login(client, USERNAME, PASSWORD)
    response = add_mail(client, EMAIL_ADDR, EMAIL_PASSWORD)
    assert response.status_code == 200
    assert get_email_address_by_address(EMAIL_ADDR)
    assert b'*****@*****.**' in response.data
Exemplo n.º 6
0
def add_email():
    logger.info("Entering add_email..")
    add_email_form = AddEmailForm()
    change_email_password_form = ChangeEmailPasswordForm()
    existing_addresses = get_existing_addresses_by_user_id(
        current_user.user_id)

    ## --- Add Email Form submission START ---
    if add_email_form.validate_on_submit():
        email_addr = add_email_form.email_address.data
        password = add_email_form.password.data

        # Checks if email already exist in database
        email_exist = get_email_address_by_address(email_addr)

        if email_exist == None:
            # Attempts a mailbox login via imap_tools based on submit
            # Adds the email address to the database
            logger.info("Checking mailbox connectivity..")
            # -- If you want to test adding emails to a user account
            # -- without checking connection
            # -- change the if statement to if True:
            if test_mailbox_conn(email_addr, password):
                new_email = EmailAddress()
                new_email.set_email_address(add_email_form.email_address.data)
                new_email.set_email_password(add_email_form.password.data)
                new_email.set_owner_id(current_user.user_id)
                new_email.set_created_at(datetime.now())
                new_email.set_active_status(True)
                db.session.add(new_email)
                db.session.commit()
            # If connection to mailbox fails
            else:
                flash("Unable to connect to mailbox."\
                " Maybe you've entered a wrong email/password?", 'error')
        else:
            flash("{} already exist in our database!".format(email_addr),
                  'error')
            logger.error("Email already exist")
    else:
        if not add_email_form.email_address.data:
            logger.warn('Empty email submitted')
            flash('Email Address cannot be empty!', 'error')
        if not add_email_form.password.data:
            logger.warn('Empty password submitted')
            flash('Password cannot be empty!', 'error')
    ## -- Add Email Form submission END --

    return redirect(url_for('dash_email'))