@@ -23,17 +23,19 @@ def get_dj_rest_auth_setting(class_name, setting_name):
2323 return getattr (api_settings , setting_name )
2424
2525
26- def get_token_serializer_class ():
26+ def get_use_jwt ():
2727 from dj_rest_auth .__version__ import __version__
2828
2929 if get_version_tuple (__version__ ) < (3 , 0 , 0 ):
30- use_jwt = getattr (settings , 'REST_USE_JWT' , False )
30+ return getattr (settings , 'REST_USE_JWT' , False )
3131 else :
3232 from dj_rest_auth .app_settings import api_settings
3333
34- use_jwt = api_settings .USE_JWT
34+ return api_settings .USE_JWT
35+
3536
36- if use_jwt :
37+ def get_token_serializer_class ():
38+ if get_use_jwt ():
3739 return get_dj_rest_auth_setting ('JWTSerializer' , 'JWT_SERIALIZER' )
3840 else :
3941 return get_dj_rest_auth_setting ('TokenSerializer' , 'TOKEN_SERIALIZER' )
@@ -74,12 +76,26 @@ def view_replacement(self):
7476 else :
7577 get_schema_params = {'exclude' : True }
7678
79+ if (
80+ get_use_jwt ()
81+ and 'rest_framework_simplejwt.token_blacklist' in settings .INSTALLED_APPS
82+ and not get_dj_rest_auth_setting ('JWT_AUTH_HTTPONLY' , 'JWT_AUTH_HTTPONLY' )
83+ ):
84+ class LogoutSerializer (serializers .Serializer ):
85+ refresh = serializers .CharField (required = True , allow_blank = False )
86+
87+ post_request_class = LogoutSerializer
88+ else :
89+ post_request_class = None
90+
7791 class Fixed (self .target_class ):
7892 @extend_schema (** get_schema_params )
7993 def get (self , request , * args , ** kwargs ):
8094 pass # pragma: no cover
8195
82- @extend_schema (request = None , responses = RestAuthDetailSerializer )
96+ @extend_schema (
97+ request = post_request_class , responses = RestAuthDetailSerializer
98+ )
8399 def post (self , request , * args , ** kwargs ):
84100 pass # pragma: no cover
85101
0 commit comments