from flask import Blueprint, render_template, request, redirect, url_for, flash from flask_login import login_user, logout_user, login_required from werkzeug.security import check_password_hash from app import db from .models import User bp = Blueprint('auth', __name__, template_folder='templates') @bp.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': email = request.form['email'] password = request.form['password'] user = User.query.filter_by(email=email).first() if user and check_password_hash(user.password_hash, password): login_user(user) flash('Logged in successfully.', 'success') return redirect(url_for('core_ui.home')) else: flash('Invalid credentials.', 'danger') return render_template('auth/login.html') @bp.route('/logout') @login_required def logout(): logout_user() flash('Logged out.', 'info') return redirect(url_for('core_ui.home')) @bp.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': email = request.form['email'] password = request.form['password'] existing_user = User.query.filter_by(email=email).first() if existing_user: flash('Email already registered.', 'warning') else: user = User(email=email) user.set_password(password) db.session.add(user) db.session.commit() flash('Account created. You can now log in.', 'success') return redirect(url_for('auth.login')) return render_template('auth/register.html')