Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_hashed_password(plain_text_password):
- return bcrypt.hashpw(plain_text_password, bcrypt.gensalt())
- def check_password(plain_text_password, hashed_password):
- return bcrypt.checkpw(plain_text_password, hashed_password)
- @app.route('/login')
- def login_form():
- return render_template('login_page.html')
- @app.route('/login', methods=['POST'])
- def login_process():
- # Users may use email OR username to log in
- username = request.form.get('login_id') #jhacks
- password = request.form.get('password') #jhacks
- user = User.query.filter(User.email == username).first()
- if not user:
- user = User.query.filter(User.username == username).first()
- print("User doesn't exist")
- if user:
- if len(password) > 8 & len(password) < 17:
- check_pw = check_password(password, user.password)
- # if password = hashed_password
- if check_pw:
- # if user.password == password:
- print("Password matches username!")
- flash("You are now logged in!")
- session['user_id'] = user.user_id # saves to session
- # return redirect('/users/{}'.format(user.user_id))
- return redirect('/users/my_page')
- # Redirect here instead for personal feed
- # elif user.password == None:
- # return redirect('/')
- else:
- print("Please enter a password between 8-16 characters!")
- return redirect('/')
- # This happens when username typed, password blank
- else:
- print("User not found! Please try again, or register.")
- return redirect('/')
- @app.route('/register', methods=['GET'])
- def registration_form():
- return render_template('register_page.html')
- @app.route('/register', methods=['POST'])
- def registration_process():
- username = request.form.get('reg_username')
- email = request.form.get('reg_email')
- password = request.form.get('reg_pw')
- hashed_pw = get_hashed_password(password)
- regex_email = re.findall(r'[^@]+@[^@]+\.[^@]+', email)
- #doesn't handle the case of spaces
- # check to make sure user doesn't already exist before
- # allowing new entry to be made in DB
- regex_username = re.match("^[a-zA-Z0-9_.-]+$", username)
- # must be alphanumeric
- # Returns none if strange characters entered or space in name
- # Returns match object if matching string
- # if regex_username == None: # if it's something
- # if len(password) > 8 & len(password) < 17:
- # valid_password = password
- fname = request.form.get('reg_fname')
- lname = request.form.get('reg_lname')
- # Check that user var matches an entry in db
- user = User.query.filter(User.email == email).first()
- if user == None: # If user doesn't exist in db
- # if regex_email: # if regex_username is valid
- # Add user to db
- print("User added!")
- flash("User added!")
- print(regex_username) # evaluated to none when "sdfosdijf e9" entered
- if regex_username is not None:
- print("REGEX USERNAME: ")
- print(regex_username)
- print("Username alphanumeric!")
- flash("Username alphanumeric!")
- # make sure password also valid
- # if username.isalnum() == True:
- print("REGEX EMAIL: ")
- print(regex_email)
- if regex_email is not None:
- print("Regex'd email is valid!")
- # user = User(username=username, password=hashed_pw, email=email, fname=fname, lname=lname)
- user = User(username=username, password=hashed_pw, email=email, fname=fname, lname=lname)
- db.session.add(user)
- db.session.commit()
- session['user_id'] = user.user_id
- else:
- print("One or more fields are invalid! Please try again.")
- return redirect('/register')
- else: # user already exists in db
- print("This user already exists! Please log in.")
- flash("This user already exists! Please log in.")
- flash("You are now registered! Please enjoy all of our features.")
- return redirect('/')
- @app.route('/logout')
- def logout_process():
- """Logs user out from website"""
- del session['user_id']
- return redirect('/')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement