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'))
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)
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'))