fix / AEB-68 account type doesn't displayed correctly
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user