Add logging for user updates and superuser status changes in CRUD and admin handlers. Fix user attribute indexing in database operations. Enhance user creation logging in user service.

This commit is contained in:
2025-09-09 01:47:53 +03:00
parent b1de709226
commit 6605957627
3 changed files with 18 additions and 5 deletions

View File

@@ -269,6 +269,8 @@ class UserCRUD(BaseCRUD):
@track_db_operation("UPDATE", "users") @track_db_operation("UPDATE", "users")
async def update(self, user: User) -> User: async def update(self, user: User) -> User:
"""Обновление пользователя""" """Обновление пользователя"""
if self.logger:
self.logger.info(f"👤 Обновление пользователя: {user.telegram_id} (is_superuser: {user.is_superuser})")
async with self.get_connection() as conn: async with self.get_connection() as conn:
await conn.execute(""" await conn.execute("""
UPDATE users SET UPDATE users SET
@@ -284,6 +286,8 @@ class UserCRUD(BaseCRUD):
user.ban_reason, user.telegram_id user.ban_reason, user.telegram_id
)) ))
await conn.commit() await conn.commit()
if self.logger:
self.logger.info(f"✅ Пользователь обновлен: {user.telegram_id}")
return user return user
@track_db_operation("DELETE", "users") @track_db_operation("DELETE", "users")
@@ -386,11 +390,11 @@ class UserCRUD(BaseCRUD):
chat_id=row[5], chat_id=row[5],
profile_link=row[6], profile_link=row[6],
is_active=bool(row[7]), is_active=bool(row[7]),
is_superuser=bool(row[12]), # Исправлено: is_superuser находится на позиции 12 is_superuser=bool(row[8]), # Исправлено: is_superuser находится на позиции 8
created_at=self._parse_datetime(row[8]), created_at=self._parse_datetime(row[9]),
updated_at=self._parse_datetime(row[9]), updated_at=self._parse_datetime(row[10]),
banned_until=self._parse_datetime(row[10]), banned_until=self._parse_datetime(row[11]),
ban_reason=row[11] ban_reason=row[12]
) )

View File

@@ -441,9 +441,12 @@ async def confirm_superuser_callback(callback: CallbackQuery, database: Database
async def remove_superuser_callback(callback: CallbackQuery, database: DatabaseService = None, validator = None): async def remove_superuser_callback(callback: CallbackQuery, database: DatabaseService = None, validator = None):
"""Обработчик снятия прав суперпользователя""" """Обработчик снятия прав суперпользователя"""
logger.info(f"🔧 Обработка снятия прав суперпользователя: {callback.data}")
try: try:
# Извлекаем ID пользователя # Извлекаем ID пользователя
user_id_str = callback.data.split("_")[-1] user_id_str = callback.data.split("_")[-1]
logger.info(f"🔧 Извлечен user_id: {user_id_str}")
# Валидируем callback data # Валидируем callback data
if validator: if validator:
@@ -474,12 +477,16 @@ async def remove_superuser_callback(callback: CallbackQuery, database: DatabaseS
# Получаем пользователя # Получаем пользователя
user = await database.get_user(user_id) user = await database.get_user(user_id)
if not user: if not user:
logger.warning(f"⚠️ Пользователь с ID {user_id} не найден")
await callback.answer("❌ Пользователь не найден", show_alert=True) await callback.answer("❌ Пользователь не найден", show_alert=True)
return return
logger.info(f"🔧 Найден пользователь: {user.display_name}, текущий статус суперпользователя: {user.is_superuser}")
# Снимаем права суперпользователя # Снимаем права суперпользователя
user.is_superuser = False user.is_superuser = False
await database.update_user(user) await database.update_user(user)
logger.info(f"✅ Права суперпользователя сняты для пользователя {user.display_name}")
await callback.message.edit_text( await callback.message.edit_text(
f"❌ <b>Права сняты!</b>\n\n" f"❌ <b>Права сняты!</b>\n\n"

View File

@@ -77,10 +77,12 @@ class UserService:
chat_id=chat_id, chat_id=chat_id,
profile_link=self.utils.generate_anonymous_id(), profile_link=self.utils.generate_anonymous_id(),
is_active=True, is_active=True,
is_superuser=False, # Явно устанавливаем False для новых пользователей
created_at=datetime.now(), created_at=datetime.now(),
updated_at=datetime.now() updated_at=datetime.now()
) )
logger.info(f"👤 Создание нового пользователя {telegram_user.id} с is_superuser={user.is_superuser}")
return await self.database.create_user(user) return await self.database.create_user(user)
@log_function_call(log_params=True, log_result=True) @log_function_call(log_params=True, log_result=True)