DogAcademyGame/src/auth.py
Xatiko 5d34162267 Изменения:
1. Ошибка "WHERE game_sessions.user_id IS NULL"
+ игра получает user_id из бд после создания пользователя, авторизации
2. Провиль пользователя
+ отображается никнейм
3. Уровни
+ добавлена рамка с 100 уровнями
+ добавлена система смены цвета кнопки уровня в зависимости от состояния (пройден/не пройден)
4. Окно победы
+ добавлено отображение никнейма
2024-12-03 02:23:50 +03:00

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