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:
@@ -269,6 +269,8 @@ class UserCRUD(BaseCRUD):
|
||||
@track_db_operation("UPDATE", "users")
|
||||
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:
|
||||
await conn.execute("""
|
||||
UPDATE users SET
|
||||
@@ -284,6 +286,8 @@ class UserCRUD(BaseCRUD):
|
||||
user.ban_reason, user.telegram_id
|
||||
))
|
||||
await conn.commit()
|
||||
if self.logger:
|
||||
self.logger.info(f"✅ Пользователь обновлен: {user.telegram_id}")
|
||||
return user
|
||||
|
||||
@track_db_operation("DELETE", "users")
|
||||
@@ -386,11 +390,11 @@ class UserCRUD(BaseCRUD):
|
||||
chat_id=row[5],
|
||||
profile_link=row[6],
|
||||
is_active=bool(row[7]),
|
||||
is_superuser=bool(row[12]), # Исправлено: is_superuser находится на позиции 12
|
||||
created_at=self._parse_datetime(row[8]),
|
||||
updated_at=self._parse_datetime(row[9]),
|
||||
banned_until=self._parse_datetime(row[10]),
|
||||
ban_reason=row[11]
|
||||
is_superuser=bool(row[8]), # Исправлено: is_superuser находится на позиции 8
|
||||
created_at=self._parse_datetime(row[9]),
|
||||
updated_at=self._parse_datetime(row[10]),
|
||||
banned_until=self._parse_datetime(row[11]),
|
||||
ban_reason=row[12]
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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):
|
||||
"""Обработчик снятия прав суперпользователя"""
|
||||
|
||||
logger.info(f"🔧 Обработка снятия прав суперпользователя: {callback.data}")
|
||||
|
||||
try:
|
||||
# Извлекаем ID пользователя
|
||||
user_id_str = callback.data.split("_")[-1]
|
||||
logger.info(f"🔧 Извлечен user_id: {user_id_str}")
|
||||
|
||||
# Валидируем callback data
|
||||
if validator:
|
||||
@@ -474,12 +477,16 @@ async def remove_superuser_callback(callback: CallbackQuery, database: DatabaseS
|
||||
# Получаем пользователя
|
||||
user = await database.get_user(user_id)
|
||||
if not user:
|
||||
logger.warning(f"⚠️ Пользователь с ID {user_id} не найден")
|
||||
await callback.answer("❌ Пользователь не найден", show_alert=True)
|
||||
return
|
||||
|
||||
logger.info(f"🔧 Найден пользователь: {user.display_name}, текущий статус суперпользователя: {user.is_superuser}")
|
||||
|
||||
# Снимаем права суперпользователя
|
||||
user.is_superuser = False
|
||||
await database.update_user(user)
|
||||
logger.info(f"✅ Права суперпользователя сняты для пользователя {user.display_name}")
|
||||
|
||||
await callback.message.edit_text(
|
||||
f"❌ <b>Права сняты!</b>\n\n"
|
||||
|
||||
@@ -77,10 +77,12 @@ class UserService:
|
||||
chat_id=chat_id,
|
||||
profile_link=self.utils.generate_anonymous_id(),
|
||||
is_active=True,
|
||||
is_superuser=False, # Явно устанавливаем False для новых пользователей
|
||||
created_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)
|
||||
|
||||
@log_function_call(log_params=True, log_result=True)
|
||||
|
||||
Reference in New Issue
Block a user