переименовывание аккаунтов админом
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user