Skip to content

Commit

Permalink
Skip global auth (#57)
Browse files Browse the repository at this point in the history
* Global Auth Skip: set default JWT Controllers auth to None to skip global auth

* 5.3.0

* updated publish.yml
  • Loading branch information
eadwinCode committed Jan 6, 2024
1 parent 15acd95 commit 73c0ce1
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 106 deletions.
13 changes: 7 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ jobs:
run: pip install flit
- name: Install Dependencies
run: flit install --symlink
- name: Install build dependencies
run: pip install build
- name: Build distribution
run: python -m build
- name: Publish
env:
FLIT_USERNAME: ${{ secrets.FLIT_USERNAME }}
FLIT_PASSWORD: ${{ secrets.FLIT_PASSWORD }}
run: flit publish
- name: Deploy Documentation
run: make doc-deploy
uses: pypa/[email protected]
with:
password: ${{ secrets.PYPI_API_TOKEN }}
2 changes: 1 addition & 1 deletion ninja_jwt/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""Django Ninja JWT - JSON Web Token for Django-Ninja"""

__version__ = "5.2.10"
__version__ = "5.3.0"
191 changes: 92 additions & 99 deletions ninja_jwt/controller.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,28 @@
import django
from asgiref.sync import sync_to_async
from ninja import Schema
from ninja_extra import ControllerBase, api_controller, http_post
from ninja_extra.permissions import AllowAny

from ninja_jwt.schema_control import SchemaControl
from ninja_jwt.settings import api_settings

exports = [
__all__ = [
"TokenVerificationController",
"TokenBlackListController",
"TokenObtainPairController",
"TokenObtainSlidingController",
"TokenObtainSlidingController",
"NinjaJWTDefaultController",
"NinjaJWTSlidingController",
"AsyncTokenVerificationController",
"AsyncTokenBlackListController",
"AsyncTokenObtainPairController",
"AsyncTokenObtainSlidingController",
"AsyncTokenObtainSlidingController",
"AsyncNinjaJWTDefaultController",
"AsyncNinjaJWTSlidingController",
]

if not django.VERSION < (3, 1):
exports += [
"AsyncTokenVerificationController",
"AsyncTokenBlackListController",
"AsyncTokenObtainPairController",
"AsyncTokenObtainSlidingController",
"AsyncTokenObtainSlidingController",
"AsyncNinjaJWTDefaultController",
"AsyncNinjaJWTSlidingController",
]

__all__ = exports


schema = SchemaControl(api_settings)


Expand Down Expand Up @@ -99,14 +92,14 @@ def refresh_token(self, refresh_token: schema.obtain_sliding_refresh_schema):
return refresh_token.to_response_schema()


@api_controller("/token", permissions=[AllowAny], tags=["token"])
@api_controller("/token", permissions=[AllowAny], tags=["token"], auth=None)
class NinjaJWTDefaultController(TokenVerificationController, TokenObtainPairController):
"""NinjaJWT Default controller for obtaining and refreshing tokens"""

auto_import = False


@api_controller("/token", permissions=[AllowAny], tags=["token"])
@api_controller("/token", permissions=[AllowAny], tags=["token"], auth=None)
class NinjaJWTSlidingController(
TokenVerificationController, TokenObtainSlidingController
):
Expand All @@ -118,84 +111,84 @@ class NinjaJWTSlidingController(
auto_import = False


if not django.VERSION < (3, 1):
from asgiref.sync import sync_to_async

class AsyncTokenVerificationController(TokenVerificationController):
@http_post(
"/verify",
response={200: Schema},
url_name="token_verify",
)
async def verify_token(self, token: schema.verify_schema):
return token.to_response_schema()

class AsyncTokenBlackListController(TokenBlackListController):
auto_import = False

@http_post(
"/blacklist",
response={200: Schema},
url_name="token_blacklist",
)
async def blacklist_token(self, refresh: schema.blacklist_schema):
return refresh.to_response_schema()

class AsyncTokenObtainPairController(TokenObtainPairController):
@http_post(
"/pair",
response=schema.obtain_pair_schema.get_response_schema(),
url_name="token_obtain_pair",
)
async def obtain_token(self, user_token: schema.obtain_pair_schema):
await sync_to_async(user_token.check_user_authentication_rule)()
return user_token.to_response_schema()

@http_post(
"/refresh",
response=schema.obtain_pair_refresh_schema.get_response_schema(),
url_name="token_refresh",
)
async def refresh_token(self, refresh_token: schema.obtain_pair_refresh_schema):
refresh = await sync_to_async(refresh_token.to_response_schema)()
return refresh

class AsyncTokenObtainSlidingController(TokenObtainSlidingController):
@http_post(
"/sliding",
response=schema.obtain_sliding_schema.get_response_schema(),
url_name="token_obtain_sliding",
)
async def obtain_token(self, user_token: schema.obtain_sliding_schema):
await sync_to_async(user_token.check_user_authentication_rule)()
return user_token.to_response_schema()

@http_post(
"/sliding/refresh",
response=schema.obtain_sliding_refresh_schema.get_response_schema(),
url_name="token_refresh_sliding",
)
async def refresh_token(
self, refresh_token: schema.obtain_sliding_refresh_schema
):
refresh = await sync_to_async(refresh_token.to_response_schema)()
return refresh

@api_controller("/token", permissions=[AllowAny], tags=["token"])
class AsyncNinjaJWTDefaultController(
AsyncTokenVerificationController, AsyncTokenObtainPairController
):
"""NinjaJWT Async Default controller for obtaining and refreshing tokens"""

auto_import = False

@api_controller("/token", permissions=[AllowAny], tags=["token"])
class AsyncNinjaJWTSlidingController(
AsyncTokenVerificationController, AsyncTokenObtainSlidingController
):
"""
NinjaJWT Async Sliding controller for obtaining and refreshing tokens
Add 'ninja_jwt.tokens.SlidingToken' in AUTH_TOKEN_CLASSES in Settings
"""

auto_import = False
class AsyncTokenVerificationController(TokenVerificationController):
@http_post(
"/verify",
response={200: Schema},
url_name="token_verify",
)
async def verify_token(self, token: schema.verify_schema):
return token.to_response_schema()


class AsyncTokenBlackListController(TokenBlackListController):
auto_import = False

@http_post(
"/blacklist",
response={200: Schema},
url_name="token_blacklist",
)
async def blacklist_token(self, refresh: schema.blacklist_schema):
return refresh.to_response_schema()


class AsyncTokenObtainPairController(TokenObtainPairController):
@http_post(
"/pair",
response=schema.obtain_pair_schema.get_response_schema(),
url_name="token_obtain_pair",
)
async def obtain_token(self, user_token: schema.obtain_pair_schema):
await sync_to_async(user_token.check_user_authentication_rule)()
return user_token.to_response_schema()

@http_post(
"/refresh",
response=schema.obtain_pair_refresh_schema.get_response_schema(),
url_name="token_refresh",
)
async def refresh_token(self, refresh_token: schema.obtain_pair_refresh_schema):
refresh = await sync_to_async(refresh_token.to_response_schema)()
return refresh


class AsyncTokenObtainSlidingController(TokenObtainSlidingController):
@http_post(
"/sliding",
response=schema.obtain_sliding_schema.get_response_schema(),
url_name="token_obtain_sliding",
)
async def obtain_token(self, user_token: schema.obtain_sliding_schema):
await sync_to_async(user_token.check_user_authentication_rule)()
return user_token.to_response_schema()

@http_post(
"/sliding/refresh",
response=schema.obtain_sliding_refresh_schema.get_response_schema(),
url_name="token_refresh_sliding",
)
async def refresh_token(self, refresh_token: schema.obtain_sliding_refresh_schema):
refresh = await sync_to_async(refresh_token.to_response_schema)()
return refresh


@api_controller("/token", permissions=[AllowAny], tags=["token"], auth=None)
class AsyncNinjaJWTDefaultController(
AsyncTokenVerificationController, AsyncTokenObtainPairController
):
"""NinjaJWT Async Default controller for obtaining and refreshing tokens"""

auto_import = False


@api_controller("/token", permissions=[AllowAny], tags=["token"], auth=None)
class AsyncNinjaJWTSlidingController(
AsyncTokenVerificationController, AsyncTokenObtainSlidingController
):
"""
NinjaJWT Async Sliding controller for obtaining and refreshing tokens
Add 'ninja_jwt.tokens.SlidingToken' in AUTH_TOKEN_CLASSES in Settings
"""

auto_import = False

0 comments on commit 73c0ce1

Please sign in to comment.