|
| 1 | +from flask import Blueprint, render_template, request, flash, redirect, url_for |
| 2 | +from .models import User |
| 3 | +from werkzeug.security import generate_password_hash, check_password_hash |
| 4 | +from . import db |
| 5 | +from flask_login import login_user, login_required, logout_user, current_user |
| 6 | + |
| 7 | + |
| 8 | +auth = Blueprint('auth', __name__) |
| 9 | + |
| 10 | + |
| 11 | +@auth.route('/login', methods=['GET', 'POST']) |
| 12 | +def login(): |
| 13 | + if request.method == 'POST': |
| 14 | + email = request.form.get('email') |
| 15 | + password = request.form.get('password') |
| 16 | + |
| 17 | + user = User.query.filter_by(email=email).first() |
| 18 | + if user: |
| 19 | + if check_password_hash(user.password, password): |
| 20 | + flash('Logged in successfully!', category='success') |
| 21 | + login_user(user, remember=True) |
| 22 | + return redirect(url_for('views.home')) |
| 23 | + else: |
| 24 | + flash('Incorrect password, try again.', category='error') |
| 25 | + else: |
| 26 | + flash('Email does not exist.', category='error') |
| 27 | + |
| 28 | + return render_template("login.html", user=current_user) |
| 29 | + |
| 30 | + |
| 31 | +@auth.route('/logout') |
| 32 | +@login_required |
| 33 | +def logout(): |
| 34 | + logout_user() |
| 35 | + return redirect(url_for('auth.login')) |
| 36 | + |
| 37 | + |
| 38 | +@auth.route('/sign-up', methods=['GET', 'POST']) |
| 39 | +def sign_up(): |
| 40 | + if request.method == 'POST': |
| 41 | + email = request.form.get('email') |
| 42 | + first_name = request.form.get('firstName') |
| 43 | + password1 = request.form.get('password1') |
| 44 | + password2 = request.form.get('password2') |
| 45 | + |
| 46 | + user = User.query.filter_by(email=email).first() |
| 47 | + if user: |
| 48 | + flash('Email already exists.', category='error') |
| 49 | + elif len(email) < 4: |
| 50 | + flash('Email must be greater than 3 characters.', category='error') |
| 51 | + elif len(first_name) < 2: |
| 52 | + flash('First name must be greater than 1 character.', category='error') |
| 53 | + elif password1 != password2: |
| 54 | + flash('Passwords don\'t match.', category='error') |
| 55 | + elif len(password1) < 7: |
| 56 | + flash('Password must be at least 7 characters.', category='error') |
| 57 | + else: |
| 58 | + new_user = User(email=email, first_name=first_name, password=generate_password_hash( |
| 59 | + password1, method='sha256')) |
| 60 | + db.session.add(new_user) |
| 61 | + db.session.commit() |
| 62 | + login_user(user, remember=True) |
| 63 | + flash('Account created!', category='success') |
| 64 | + return redirect(url_for('views.home')) |
| 65 | + |
| 66 | + return render_template("sign_up.html", user=current_user) |
0 commit comments