fix / AEB-68 account type doesn't displayed correctly

This commit is contained in:
Timofey
2025-10-29 09:56:32 +03:00
parent 6ac5acebba
commit efc9d5c579
9 changed files with 184 additions and 178 deletions

View File

@@ -10,6 +10,7 @@ from drf_spectacular.utils import extend_schema, OpenApiResponse, OpenApiExample
from drf_spectacular.types import OpenApiTypes
from django.contrib.auth.models import User as DjangoUser
from api.types import User
from .serializers import (
UserResponseSerializer,
@@ -49,7 +50,8 @@ class LoginViewSet(AuthBaseViewSet):
"name": "Иван",
"surname": "Иванов",
"imageURL": "https://example.com/avatar.jpg",
"uuid": "abc123"
"uuid": "abc123",
"account_type": "admin"
}
}
)
@@ -102,6 +104,7 @@ class LoginViewSet(AuthBaseViewSet):
try:
login = request.data.get("login")
password = request.data.get("password")
role = request.data.get("role")
if not login or not password:
return Response(
@@ -110,7 +113,7 @@ class LoginViewSet(AuthBaseViewSet):
)
try:
user = DjangoUser.objects.get(username=login)
user: User = DjangoUser.objects.get(username=login) # type: ignore[assignment]
except DjangoUser.DoesNotExist:
return Response(
{"error": "Пользователь не найден"},
@@ -123,6 +126,19 @@ class LoginViewSet(AuthBaseViewSet):
status=status.HTTP_403_FORBIDDEN
)
# обновляем account_type в профиле пользователя
if role:
valid_roles = ['engineer', 'operator', 'admin']
if role not in valid_roles:
return Response(
{"error": f"Недопустимая роль. Доступные роли: {', '.join(valid_roles)}"},
status=status.HTTP_400_BAD_REQUEST
)
if hasattr(user, 'userprofile'):
user.userprofile.account_type = role
user.userprofile.save()
refresh = RefreshToken.for_user(user)
user_data = UserResponseSerializer(user).data