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')) |