accounts.py 2.9 KB

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