accounts.py 3.0 KB

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