from flask import render_template, redirect, url_for, flash, request from flask_login import login_user, logout_user, login_required, current_user from app import app, db from app.forms import LoginForm from app.models import User @app.route('/') @app.route('/home') def home(): return render_template('home.html') @app.route('/admin') @login_required def admin(): if not current_user.is_admin: flash('You do not have permission to access this page.') return redirect(url_for('home')) return render_template('admin.html') @app.route('/login', methods=['GET', 'POST']) def login(): if current_user.is_authenticated: return redirect(url_for('home')) form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(username=form.username.data).first() if user and user.check_password(form.password.data): login_user(user, remember=form.remember_me.data) next_page = request.args.get('next') return redirect(next_page) if next_page else redirect(url_for('home')) else: flash('Invalid username or password') return render_template('login.html', form=form) @app.route('/logout') def logout(): logout_user() return redirect(url_for('home'))