from flask import Blueprint, render_template, request, flash, redirect, url_for
from .models import User, Note
from werkzeug.security import generate_password_hash, check_password_hash
from website import db
from flask_login import login_user, login_required, logout_user, current_user

auth = Blueprint('auth', __name__)

@auth.route('/login', methods=['GET', 'POST'])
def login():
  if request.method == 'POST':
    email = request.form.get('email')
    password = request.form.get('password')

    user = User.query.filter_by(email=email).first()
    if user:
      if check_password_hash(user.password, password):
        flash('Logged in suucessfully!', category='success')
        login_user(user, remember=True)
        return redirect(url_for('views.home'))
    else:
      flash('Email does not exist.', category='error')

  return render_template("login.html", user=current_user)

@auth.route('/logout')
@login_required
def logout():
  logout_user()
  return redirect(url_for('auth.login'))

@auth.route('/sign-up', methods=['GET', 'POST'])
def signup():
  if request.method == 'POST':
    email = request.form.get('email')
    firstName = request.form.get('firstName')
    password1 = request.form.get('password1')
    password2 = request.form.get('<PASSWORD>')

    if len(email) < 3:
      flash('Email minimum have 4 letter', category='error')
    elif len(firstName) < 3:
      flash('First name minimum have 4 letter', category='error')
    elif len(password1) < 3:
      flash('Password minimum have 4 letter', category='error')
    elif password1 != password2:
      flash('Password is not matching', category='error')
    else:
      new_user = User(email=email, password=generate_password_hash(password1, method='sha256'), first_name=firstName)
      db.session.add(new_user)
      db.session.commit()
      flash('Account is created!', category='success')
      return redirect(url_for('views.home'))

  return render_template("sign_up.html", user=current_user)
