Spaces:
No application file
No application file
from flask import Blueprint, render_template, redirect, url_for, flash | |
from flask_login import login_user, logout_user, login_required | |
from werkzeug.security import generate_password_hash, check_password_hash | |
from models import User, db # Используем SQLAlchemy модели | |
from forms import LoginForm, RegistrationForm | |
from datetime import datetime | |
auth_bp = Blueprint('auth_bp', __name__) | |
def login(): | |
form = LoginForm() | |
if form.validate_on_submit(): | |
user = User.query.filter_by(email=form.email.data).first() # Запрос через SQLAlchemy | |
if user and user.check_password(form.password.data): | |
login_user(user) # Используем модель User из Flask-SQLAlchemy | |
return redirect(url_for('index')) | |
flash('Неверный email или пароль', 'danger') | |
return render_template('auth/login.html', form=form) | |
def register(): | |
form = RegistrationForm() | |
if form.validate_on_submit(): | |
try: | |
# Создаем нового пользователя через SQLAlchemy | |
user = User( | |
username=form.username.data, | |
email=form.email.data, | |
password_hash=generate_password_hash(form.password.data) | |
) | |
db.session.add(user) | |
db.session.commit() | |
flash('Регистрация прошла успешно! Теперь вы можете войти.', 'success') | |
return redirect(url_for('auth_bp.login')) | |
except Exception as e: | |
db.session.rollback() | |
flash('Пользователь с таким email или именем уже существует', 'danger') | |
return render_template('auth/register.html', form=form) | |
def logout(): | |
logout_user() | |
return redirect(url_for('auth_bp.login')) |