from flask import render_template, redirect, url_for, request, flash
from .. import db
from ..models import User
from . import auth
from flask_login import login_required, current_user, login_user, logout_user
from .forms import LoginForm
from werkzeug.urls import url_parse


@auth.route('/login', methods=['GET', 'POST'])
def login():
	if current_user.is_authenticated:
		next_page = '/'
		return redirect(next_page)
	form = LoginForm()
	if form.validate_on_submit():
		user = User.query.filter_by(name=form.username.data).first()
		if user is None or not user.check_password(form.password.data):
			flash('Invalid username or password')
			return redirect(url_for('auth.login'))
		login_user(user, remember=False)
		next_page = request.args.get('next')
		if not next_page or url_parse(next_page).netloc != '':
			next_page = '/'
		return redirect(next_page)
	return render_template('auth/login.html', title='Sign In', form=form)


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