переименовывание аккаунтов админом

This commit is contained in:
2026-06-17 16:43:43 +03:00
parent 3291c67b2c
commit b302ec769a
3 changed files with 114 additions and 26 deletions
+15 -2
View File
@@ -5,10 +5,16 @@ from typing import Any
from sqlmodel import Session, select
from app.core.errors import InvalidCredentialsError, NotFoundError, ValidationError
from app.core.errors import (
InvalidCredentialsError,
NicknameTakenError,
NotFoundError,
ValidationError,
)
from app.core.security import verify_password
from app.core.timeutil import iso_utc
from app.models import AuditLog, Faction, Group, Match, MatchParticipant, User
from app.services import user_service
def authenticate_admin(session: Session, username: str, password: str) -> User:
@@ -39,7 +45,14 @@ def update_user(session: Session, user_id: int, *, nickname: str | None = None,
if user is None:
raise NotFoundError("Пользователь не найден.")
if nickname is not None:
user.nickname = nickname.strip()
nickname = nickname.strip()
# Та же валидация, что и для самостоятельной смены ника игроком:
# корректный формат и уникальность (иначе занятый ник упал бы в 500).
if not user_service.nickname_format_ok(nickname):
raise ValidationError("Ник: 2–64 символа, буквы/цифры/пробел/.-_")
if not user_service.nickname_available(session, nickname, exclude_user_id=user_id):
raise NicknameTakenError()
user.nickname = nickname
if is_active is not None:
user.is_active = is_active
session.add(user)