1. Ошибка "WHERE game_sessions.user_id IS NULL" + игра получает user_id из бд после создания пользователя, авторизации 2. Провиль пользователя + отображается никнейм 3. Уровни + добавлена рамка с 100 уровнями + добавлена система смены цвета кнопки уровня в зависимости от состояния (пройден/не пройден) 4. Окно победы + добавлено отображение никнейма
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import logging
|
|
|
|
from sqlalchemy.exc import SQLAlchemyError
|
|
from database.db_session import get_session
|
|
from database.models import Auth, Users, GameSession
|
|
|
|
|
|
def register_user(login, password, username):
|
|
"""Регистрация нового пользователя."""
|
|
session = get_session()
|
|
try:
|
|
if session.query(Auth).filter_by(login=login).first():
|
|
return False, "Логин уже используется."
|
|
|
|
# Создаем новую запись в Auth
|
|
new_auth = Auth(login=login, password=password)
|
|
session.add(new_auth)
|
|
session.commit()
|
|
|
|
# Создаем запись в Users
|
|
new_user = Users(user_id=new_auth.user_id, username=username)
|
|
session.add(new_user)
|
|
|
|
# Создаем запись в GameSession
|
|
new_game_session = GameSession(user_id=new_user.user_id, level=1)
|
|
session.add(new_game_session)
|
|
session.commit()
|
|
|
|
return True, "Регистрация успешна."
|
|
except SQLAlchemyError as e:
|
|
session.rollback()
|
|
logging.error(f"Ошибка при регистрации: {e}")
|
|
return False, "Произошла ошибка при регистрации."
|
|
finally:
|
|
session.close()
|
|
|
|
|
|
def login_user(login, password):
|
|
"""Авторизация пользователя."""
|
|
session = get_session()
|
|
try:
|
|
auth = session.query(Auth).filter_by(login=login, password=password).first()
|
|
if auth:
|
|
return True, auth.user_id
|
|
return False, "Неверный логин или пароль."
|
|
except SQLAlchemyError as e:
|
|
return False, f"Ошибка авторизации: {e}"
|
|
finally:
|
|
session.close()
|