Esempio n. 1
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'))
Esempio n. 2
0
def profile(user):
    user_profile = users_collection.find_one({'user_name': user})
    if user_profile is None:
        flash(user + " doesn't exist")
        return redirect(url_for('index'))
    if user == session.get('username'):
        user_stories = stories_collection.find({'author': user})
    else:
        if session.get("is_adult") is True:
            user_stories = stories_collection.find({
                'author': user,
                "chapters.0": {
                    "$exists": True
                }
            })
        else:
            user_stories = stories_collection.find({
                'author': user,
                "rating": {
                    "$nin": ["R/Adult/NSFW", "Adult/NSFW"]
                },
                "chapters.0": {
                    "$exists": True
                }
            })
    user_stories_count = user_stories.count()
    return render_template("profile.html",
                           user=user,
                           stories=user_stories,
                           profile=user_profile,
                           count=user_stories_count)
Esempio n. 3
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'))