Skip to content

Commit 73c0ce1

Browse files
authored
Skip global auth (#57)
* Global Auth Skip: set default JWT Controllers auth to None to skip global auth * 5.3.0 * updated publish.yml
1 parent 15acd95 commit 73c0ce1

File tree

3 files changed

+100
-106
lines changed

3 files changed

+100
-106
lines changed

.github/workflows/publish.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ jobs:
1818
run: pip install flit
1919
- name: Install Dependencies
2020
run: flit install --symlink
21+
- name: Install build dependencies
22+
run: pip install build
23+
- name: Build distribution
24+
run: python -m build
2125
- name: Publish
22-
env:
23-
FLIT_USERNAME: ${{ secrets.FLIT_USERNAME }}
24-
FLIT_PASSWORD: ${{ secrets.FLIT_PASSWORD }}
25-
run: flit publish
26-
- name: Deploy Documentation
27-
run: make doc-deploy
26+
uses: pypa/gh-action-pypi-publish@v1.8.10
27+
with:
28+
password: ${{ secrets.PYPI_API_TOKEN }}

ninja_jwt/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Django Ninja JWT - JSON Web Token for Django-Ninja"""
22

3-
__version__ = "5.2.10"
3+
__version__ = "5.3.0"

ninja_jwt/controller.py

Lines changed: 92 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,28 @@
1-
import django
1+
from asgiref.sync import sync_to_async
22
from ninja import Schema
33
from ninja_extra import ControllerBase, api_controller, http_post
44
from ninja_extra.permissions import AllowAny
55

66
from ninja_jwt.schema_control import SchemaControl
77
from 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-
3326
schema = 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)
10396
class 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)
110103
class 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

Comments
 (0)