1- import django
1+ from asgiref . sync import sync_to_async
22from ninja import Schema
33from ninja_extra import ControllerBase , api_controller , http_post
44from ninja_extra .permissions import AllowAny
55
66from ninja_jwt .schema_control import SchemaControl
77from ninja_jwt .settings import api_settings
88
9- exports = [
9+ __all__ = [
1010 "TokenVerificationController" ,
1111 "TokenBlackListController" ,
1212 "TokenObtainPairController" ,
1313 "TokenObtainSlidingController" ,
1414 "TokenObtainSlidingController" ,
1515 "NinjaJWTDefaultController" ,
1616 "NinjaJWTSlidingController" ,
17+ "AsyncTokenVerificationController" ,
18+ "AsyncTokenBlackListController" ,
19+ "AsyncTokenObtainPairController" ,
20+ "AsyncTokenObtainSlidingController" ,
21+ "AsyncTokenObtainSlidingController" ,
22+ "AsyncNinjaJWTDefaultController" ,
23+ "AsyncNinjaJWTSlidingController" ,
1724]
1825
19- if not django .VERSION < (3 , 1 ):
20- exports += [
21- "AsyncTokenVerificationController" ,
22- "AsyncTokenBlackListController" ,
23- "AsyncTokenObtainPairController" ,
24- "AsyncTokenObtainSlidingController" ,
25- "AsyncTokenObtainSlidingController" ,
26- "AsyncNinjaJWTDefaultController" ,
27- "AsyncNinjaJWTSlidingController" ,
28- ]
29-
30- __all__ = exports
31-
32-
3326schema = SchemaControl (api_settings )
3427
3528
@@ -99,14 +92,14 @@ def refresh_token(self, refresh_token: schema.obtain_sliding_refresh_schema):
9992 return refresh_token .to_response_schema ()
10093
10194
102- @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ])
95+ @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ], auth = None )
10396class NinjaJWTDefaultController (TokenVerificationController , TokenObtainPairController ):
10497 """NinjaJWT Default controller for obtaining and refreshing tokens"""
10598
10699 auto_import = False
107100
108101
109- @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ])
102+ @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ], auth = None )
110103class NinjaJWTSlidingController (
111104 TokenVerificationController , TokenObtainSlidingController
112105):
@@ -118,84 +111,84 @@ class NinjaJWTSlidingController(
118111 auto_import = False
119112
120113
121- if not django . VERSION < ( 3 , 1 ):
122- from asgiref . sync import sync_to_async
123-
124- class AsyncTokenVerificationController ( TokenVerificationController ):
125- @ http_post (
126- "/verify" ,
127- response = { 200 : Schema },
128- url_name = "token_verify" ,
129- )
130- async def verify_token ( self , token : schema . verify_schema ):
131- return token . to_response_schema ()
132-
133- class AsyncTokenBlackListController ( TokenBlackListController ):
134- auto_import = False
135-
136- @ http_post (
137- "/blacklist " ,
138- response = { 200 : Schema },
139- url_name = "token_blacklist" ,
140- )
141- async def blacklist_token ( self , refresh : schema . blacklist_schema ):
142- return refresh . to_response_schema ()
143-
144- class AsyncTokenObtainPairController ( TokenObtainPairController ):
145- @ http_post (
146- "/pair" ,
147- response = schema . obtain_pair_schema . get_response_schema () ,
148- url_name = "token_obtain_pair" ,
149- )
150- async def obtain_token ( self , user_token : schema . obtain_pair_schema ):
151- await sync_to_async ( user_token .check_user_authentication_rule ) ()
152- return user_token . to_response_schema ()
153-
154- @ http_post (
155- "/refresh" ,
156- response = schema . obtain_pair_refresh_schema . get_response_schema () ,
157- url_name = "token_refresh" ,
158- )
159- async def refresh_token ( self , refresh_token : schema . obtain_pair_refresh_schema ):
160- refresh = await sync_to_async ( refresh_token . to_response_schema )()
161- return refresh
162-
163- class AsyncTokenObtainSlidingController (TokenObtainSlidingController ):
164- @http_post (
165- "/sliding" ,
166- response = schema .obtain_sliding_schema .get_response_schema (),
167- url_name = "token_obtain_sliding" ,
168- )
169- async def obtain_token (self , user_token : schema .obtain_sliding_schema ):
170- await sync_to_async (user_token .check_user_authentication_rule )()
171- return user_token .to_response_schema ()
172-
173- @http_post (
174- "/sliding/refresh" ,
175- response = schema .obtain_sliding_refresh_schema .get_response_schema (),
176- url_name = "token_refresh_sliding" ,
177- )
178- async def refresh_token (
179- self , refresh_token : schema . obtain_sliding_refresh_schema
180- ):
181- refresh = await sync_to_async ( refresh_token . to_response_schema )()
182- return refresh
183-
184- @ api_controller ( "/token" , permissions = [ AllowAny ], tags = [ "token" ])
185- class AsyncNinjaJWTDefaultController (
186- AsyncTokenVerificationController , AsyncTokenObtainPairController
187- ):
188- """NinjaJWT Async Default controller for obtaining and refreshing tokens"""
189-
190- auto_import = False
191-
192- @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ])
193- class AsyncNinjaJWTSlidingController (
194- AsyncTokenVerificationController , AsyncTokenObtainSlidingController
195- ):
196- """
197- NinjaJWT Async Sliding controller for obtaining and refreshing tokens
198- Add 'ninja_jwt.tokens.SlidingToken' in AUTH_TOKEN_CLASSES in Settings
199- """
200-
201- auto_import = False
114+ class AsyncTokenVerificationController ( TokenVerificationController ):
115+ @ http_post (
116+ "/verify" ,
117+ response = { 200 : Schema },
118+ url_name = "token_verify" ,
119+ )
120+ async def verify_token ( self , token : schema . verify_schema ):
121+ return token . to_response_schema ()
122+
123+
124+ class AsyncTokenBlackListController ( TokenBlackListController ):
125+ auto_import = False
126+
127+ @ http_post (
128+ "/blacklist" ,
129+ response = { 200 : Schema },
130+ url_name = "token_blacklist " ,
131+ )
132+ async def blacklist_token ( self , refresh : schema . blacklist_schema ):
133+ return refresh . to_response_schema ( )
134+
135+
136+ class AsyncTokenObtainPairController ( TokenObtainPairController ):
137+ @ http_post (
138+ "/pair" ,
139+ response = schema . obtain_pair_schema . get_response_schema () ,
140+ url_name = "token_obtain_pair" ,
141+ )
142+ async def obtain_token ( self , user_token : schema . obtain_pair_schema ):
143+ await sync_to_async ( user_token . check_user_authentication_rule )()
144+ return user_token .to_response_schema ()
145+
146+ @ http_post (
147+ "/refresh" ,
148+ response = schema . obtain_pair_refresh_schema . get_response_schema () ,
149+ url_name = "token_refresh" ,
150+ )
151+ async def refresh_token ( self , refresh_token : schema . obtain_pair_refresh_schema ):
152+ refresh = await sync_to_async ( refresh_token . to_response_schema )()
153+ return refresh
154+
155+
156+ class AsyncTokenObtainSlidingController (TokenObtainSlidingController ):
157+ @http_post (
158+ "/sliding" ,
159+ response = schema .obtain_sliding_schema .get_response_schema (),
160+ url_name = "token_obtain_sliding" ,
161+ )
162+ async def obtain_token (self , user_token : schema .obtain_sliding_schema ):
163+ await sync_to_async (user_token .check_user_authentication_rule )()
164+ return user_token .to_response_schema ()
165+
166+ @http_post (
167+ "/sliding/refresh" ,
168+ response = schema .obtain_sliding_refresh_schema .get_response_schema (),
169+ url_name = "token_refresh_sliding" ,
170+ )
171+ async def refresh_token (self , refresh_token : schema . obtain_sliding_refresh_schema ):
172+ refresh = await sync_to_async ( refresh_token . to_response_schema )()
173+ return refresh
174+
175+
176+ @ api_controller ( "/token" , permissions = [ AllowAny ], tags = [ "token" ], auth = None )
177+ class AsyncNinjaJWTDefaultController (
178+ AsyncTokenVerificationController , AsyncTokenObtainPairController
179+ ):
180+ """NinjaJWT Async Default controller for obtaining and refreshing tokens"""
181+
182+ auto_import = False
183+
184+
185+ @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ], auth = None )
186+ class AsyncNinjaJWTSlidingController (
187+ AsyncTokenVerificationController , AsyncTokenObtainSlidingController
188+ ):
189+ """
190+ NinjaJWT Async Sliding controller for obtaining and refreshing tokens
191+ Add 'ninja_jwt.tokens.SlidingToken' in AUTH_TOKEN_CLASSES in Settings
192+ """
193+
194+ auto_import = False
0 commit comments