Как указать пользовательский бэкенд auth только для просмотра с одним входом?
У меня есть две конечные точки login api. Одна для обычных пользователей, где пользователь входит только с именем пользователя, а для сотрудников пользователь должен войти с действительным именем пользователя и паролем.
class PasswordLessBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
return None
else:
if self.user_can_authenticate(user):
return user
AUTHENTICATION_BACKENDS = [
"django.contrib.auth.backends.ModelBackend",
"users.backends.PasswordLessBackend",
]
Я хочу удалить мой пользовательский бэкенд из настроек и применить его только в этом представлении входа, так как другие входы для сотрудников должны требовать правильный пароль.
class NormalUserLoginView(APIView):
permission_classes = [permissions.AllowAny]
def post(self, request):
serializer = NormalUserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
username = serializer.validated_data.get("username")
user = authenticate(username=username)
if user is not None:
refresh_token = RefreshToken.for_user(user)
access_token = refresh_token.access_token
data["access_token"] = str(access_token)
data["refresh_token"] = str(refresh_token)