예제 #1
0
 def test_calculate_age(self):
     age1 = calculate_age("1984-06-21")
     age2 = calculate_age("2010-11-10")
     age3 = calculate_age(datetime.strftime(date.today(), '%Y-%m-%d'))
     self.assertGreaterEqual(age1, 34)
     self.assertLess(age2, 18)
     self.assertEqual(age3, 0)
예제 #2
0
def user_auth():
    form = request.form.to_dict()
    user_in_db = users_collection.find_one({
        "$or": [{
            "user_name": form['username']
        }, {
            "email": form['username']
        }]
    })
    # Check for user in database
    if user_in_db:
        # If passwords match (hashed / real password)
        if check_password_hash(user_in_db['password'], form['user_password']):
            # Log user in (add to session)
            session['username'] = user_in_db['user_name']
            session['is_admin'] = user_in_db.get('is_admin')
            birthday = user_in_db['birthday']
            age = calculate_age(birthday)
            if age >= 18:
                session['is_adult'] = True
            else:
                session['is_adult'] = False
            flash("You have been successfully signed in!")
            if session.get('next') is not None:
                return redirect(session['next'])
            return redirect(url_for('profile', user=user_in_db['user_name']))

        else:
            flash("Wrong password / username!")
            return redirect(url_for('login'))
    else:
        flash("You must be registered!")
        return redirect(url_for('register'))
예제 #3
0
def check_registration():
    form = request.form.to_dict()
    # Check if the password and password1 actualy match
    if form['user_password'] == form['user_password1']:
        # If so try to find the user in db
        user = users_collection.find_one({"user_name": form['username']})
        email = users_collection.find_one({"email": form['email']})
        if user:
            flash(form['username'].title() +
                  " already exists!  Is this you? Please sign in instead. " +
                  "Else, please choose a different username.")
            return redirect(url_for('register'))
        elif email:
            flash("We already have a registered user with " + form['email'] +
                  "! Did you forget your username?" +
                  " Sign in with email instead.")
            return redirect(url_for('login'))
        # If user does not exist register new user
        else:
            # Hash password
            hash_pass = generate_password_hash(form['user_password'])
            # Create new user with hashed password
            users_collection.insert_one({
                'user_name': form['username'],
                'email': form['email'],
                'password': hash_pass,
                'birthday': form['birthday']
            })
            # Check if user is actualy saved
            user_in_db = users_collection.find_one(
                {"user_name": form['username']})
            if user_in_db:
                # Log user in (add to session)
                session['username'] = user_in_db['user_name']
                session['is_admin'] = user_in_db.get('is_admin')
                birthday = user_in_db['birthday']
                age = calculate_age(birthday)
                if age >= 18:
                    session['is_adult'] = True
                else:
                    session['is_adult'] = False
                flash("You have been successfully signed in!")
                # If user came from elsewhere in the app
                if session.get('next') is not None:
                    return redirect(session['next'])
                return redirect(
                    url_for('profile', user=user_in_db['user_name']))
            else:
                flash("There was a problem saving your profile")
                return redirect(url_for('register'))

    else:
        flash("Passwords don't match!")
        return redirect(url_for('register'))
예제 #4
0
def view_plans():
    """
    Redirects the user to the Facebook login page to authorize the app:
    - response_type=code
    - Scope requests is to access user posts

    :return: Redirects to the Facebook login page
    """

    if request.form['date'] != '':
        session['age'] = calculate_age(request.form['date'])

    session['income'] = request.form['income']
    print(session['income'])
    session['zipcode'] = request.form['zipcode']
    base_rate = calculate_rate(session['zipcode'], session['age'])
    session['base_rate'] = base_rate

    if request.form['twitter'] != '' :
        session['analyse_twitter'] = True
        session['twitter_handle'] = request.form['twitter']
    else:
        session['analyse_twitter'] = False
    if 'with_fb' in request.form:
        session['analyse_fb'] = True
    else:
        session['analyse_fb'] = False
    if 'with_fb' in request.form:
        print("Logging in with FB")
        return flask.redirect("https://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s&scope=user_posts"
                % (FACEBOOK_APP_ID, REDIRECT_URI))
    elif 'without_fb' in request.form:
        print("Logging in without FB")
        user_authorized = True if "user_token" in TOKENS else False
        return flask.render_template("insurance_plans.html", \
                rate = session['base_rate'], age = session['age'])