From 0793905e78ed302e8af9735fe444d8ed22fe8ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Wed, 7 Jul 2021 14:03:36 +0200 Subject: [PATCH] Fixed warnings reported by drf-speculator - Unable to guess serializer of AccountViewSet, IdentityViewSet and ParametersViewSet - There was no OpenApiAuthenticationExtension registered for the subclass JWTAuthenticationWith2FA --- modoboa/admin/api/v2/viewsets.py | 1 + modoboa/core/api/v1/viewsets.py | 1 + modoboa/core/drf_authentication.py | 6 ++++++ modoboa/parameters/api/v2/viewsets.py | 1 + 4 files changed, 9 insertions(+) diff --git a/modoboa/admin/api/v2/viewsets.py b/modoboa/admin/api/v2/viewsets.py index 10ad2d391..d3f5e55ae 100644 --- a/modoboa/admin/api/v2/viewsets.py +++ b/modoboa/admin/api/v2/viewsets.py @@ -183,6 +183,7 @@ class IdentityViewSet(viewsets.ViewSet): """Viewset for identities.""" permission_classes = (permissions.IsAuthenticated, ) + serializer_class = None def list(self, request, **kwargs): """Return all identities.""" diff --git a/modoboa/core/api/v1/viewsets.py b/modoboa/core/api/v1/viewsets.py index 1014c2e4d..7bee9079c 100644 --- a/modoboa/core/api/v1/viewsets.py +++ b/modoboa/core/api/v1/viewsets.py @@ -19,6 +19,7 @@ class AccountViewSet(viewsets.ViewSet): """ permission_classes = (permissions.IsAuthenticated, ) + serializer_class = None @action(methods=["post"], detail=False, url_path="tfa/setup") def tfa_setup(self, request): diff --git a/modoboa/core/drf_authentication.py b/modoboa/core/drf_authentication.py index af643b649..1bb9f5c52 100644 --- a/modoboa/core/drf_authentication.py +++ b/modoboa/core/drf_authentication.py @@ -4,6 +4,7 @@ from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from django_otp.models import Device +from drf_spectacular.contrib.rest_framework_simplejwt import SimpleJWTScheme from rest_framework import status from rest_framework.exceptions import APIException from rest_framework_simplejwt.authentication import JWTAuthentication @@ -44,3 +45,8 @@ class JWTAuthenticationWith2FA(JWTAuthentication): if user.tfa_enabled: self.verify_user(request, user) return user, token + + +class SimpleJWTWith2FAScheme(SimpleJWTScheme): + target_class = 'modoboa.core.drf_authentication.JWTAuthenticationWith2FA' + name = 'jwt2FAAuth' diff --git a/modoboa/parameters/api/v2/viewsets.py b/modoboa/parameters/api/v2/viewsets.py index 71e55401c..efefd838c 100644 --- a/modoboa/parameters/api/v2/viewsets.py +++ b/modoboa/parameters/api/v2/viewsets.py @@ -12,6 +12,7 @@ class ParametersViewSet(viewsets.ViewSet): """Parameter viewset.""" lookup_value_regex = r"\w+" + serializer_class = None @extend_schema(responses=serializers.ApplicationSerializer(many=True)) @action(methods=["get"], detail=False)