1
- import django
1
+ from asgiref . sync import sync_to_async
2
2
from ninja import Schema
3
3
from ninja_extra import ControllerBase , api_controller , http_post
4
4
from ninja_extra .permissions import AllowAny
5
5
6
6
from ninja_jwt .schema_control import SchemaControl
7
7
from ninja_jwt .settings import api_settings
8
8
9
- exports = [
9
+ __all__ = [
10
10
"TokenVerificationController" ,
11
11
"TokenBlackListController" ,
12
12
"TokenObtainPairController" ,
13
13
"TokenObtainSlidingController" ,
14
14
"TokenObtainSlidingController" ,
15
15
"NinjaJWTDefaultController" ,
16
16
"NinjaJWTSlidingController" ,
17
+ "AsyncTokenVerificationController" ,
18
+ "AsyncTokenBlackListController" ,
19
+ "AsyncTokenObtainPairController" ,
20
+ "AsyncTokenObtainSlidingController" ,
21
+ "AsyncTokenObtainSlidingController" ,
22
+ "AsyncNinjaJWTDefaultController" ,
23
+ "AsyncNinjaJWTSlidingController" ,
17
24
]
18
25
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
-
33
26
schema = SchemaControl (api_settings )
34
27
35
28
@@ -99,14 +92,14 @@ def refresh_token(self, refresh_token: schema.obtain_sliding_refresh_schema):
99
92
return refresh_token .to_response_schema ()
100
93
101
94
102
- @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ])
95
+ @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ], auth = None )
103
96
class NinjaJWTDefaultController (TokenVerificationController , TokenObtainPairController ):
104
97
"""NinjaJWT Default controller for obtaining and refreshing tokens"""
105
98
106
99
auto_import = False
107
100
108
101
109
- @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ])
102
+ @api_controller ("/token" , permissions = [AllowAny ], tags = ["token" ], auth = None )
110
103
class NinjaJWTSlidingController (
111
104
TokenVerificationController , TokenObtainSlidingController
112
105
):
@@ -118,84 +111,84 @@ class NinjaJWTSlidingController(
118
111
auto_import = False
119
112
120
113
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