logic.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # Site Back-End Logic
  2. from hmac import new
  3. from flask import Blueprint, render_template, request, flash, redirect, url_for
  4. from flask_login import login_user, login_required, logout_user, current_user
  5. from werkzeug.security import generate_password_hash, check_password_hash
  6. from .models import User
  7. from . import db
  8. import string, secrets
  9. logic = Blueprint('logic', __name__)
  10. @logic.route('/', methods=['GET'])
  11. @login_required
  12. def profile():
  13. return render_template('home.html', user=current_user)
  14. @logic.route('/login', methods=['GET', 'POST'])
  15. def login():
  16. if request.method == 'POST':
  17. email = request.form.get('email')
  18. challenge_passwd = request.form.get('passwd_login')
  19. user = User.query.filter_by(email=email).first()
  20. if user:
  21. if check_password_hash(user.password, challenge_passwd):
  22. flash('Successful Login!', category='success')
  23. login_user(user, remember=True)
  24. return redirect(url_for('logic.profile'))
  25. else:
  26. flash('Unsucessful Login!', category='error')
  27. else:
  28. flash('Unsucessful Login!', category='error')
  29. return render_template("login.html", user=current_user)
  30. @logic.route('/logout')
  31. @login_required
  32. def logout():
  33. logout_user()
  34. return redirect(url_for('logic.login'))
  35. @logic.route('/register', methods=['GET', 'POST'])
  36. def register():
  37. pass_list = list()
  38. if request.method == 'POST':
  39. email = request.form.get('email')
  40. username = request.form.get('username')
  41. passwd_1 = request.form.get('passwd_1')
  42. passwd_2 = request.form.get('passwd_2')
  43. # Basic User Input Checks
  44. email_check = User.query.filter_by(email=email).first()
  45. if len(email) < 1:
  46. flash('Your Email must be longer than 0 characters.', category='error')
  47. elif email_check:
  48. flash('This Email is already taken', category='error')
  49. else:
  50. pass_list.append('p')
  51. if len(username) < 1:
  52. flash('Username must be something', category='error')
  53. else:
  54. pass_list.append('p')
  55. if len(passwd_1) < 8 or len(passwd_2) < 8:
  56. flash('Your Password must be longer than or equal to 8 characters.', category='error')
  57. else:
  58. if passwd_1 != passwd_2:
  59. flash('Your Passwords must match!', category='error')
  60. else:
  61. if len(pass_list) == 2:
  62. new_user = User(email=email, username=username, password=generate_password_hash(passwd_2, method='sha256'))
  63. db.session.add(new_user)
  64. db.session.commit()
  65. flash('Account Registration Successful!', category='success')
  66. return redirect(url_for('logic.profile'))
  67. else:
  68. flash('Registration Failed', category='error')
  69. return render_template("register.html", user=current_user)