From 5a20c61a235d75030ef4e9bf26d4b266fc0e7006 Mon Sep 17 00:00:00 2001 From: Pavel Dorovskoy Date: Tue, 15 Mar 2022 16:47:35 -0400 Subject: [PATCH 1/3] Use dynamically generated schema, and use specified username field --- ninja_jwt/schema.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ninja_jwt/schema.py b/ninja_jwt/schema.py index 2ed728a97..f65d82736 100644 --- a/ninja_jwt/schema.py +++ b/ninja_jwt/schema.py @@ -4,11 +4,11 @@ from django.contrib.auth import authenticate, get_user_model from django.contrib.auth.models import AbstractUser, update_last_login from django.utils.translation import gettext_lazy as _ +from ninja.orm import create_schema +from ninja_jwt.utils import token_error from ninja_schema import ModelSchema, Schema from pydantic import root_validator -from ninja_jwt.utils import token_error - from . import exceptions from .settings import api_settings from .tokens import RefreshToken, SlidingToken, Token, UntypedToken @@ -19,6 +19,9 @@ user_name_field = get_user_model().USERNAME_FIELD # type: ignore +AuthUserSchema = create_schema(get_user_model(), fields=[user_name_field]) + + class TokenObtainSerializer(ModelSchema): class Config: model = get_user_model() @@ -69,10 +72,9 @@ def get_token(cls, user: Type[AbstractUser]) -> Type[Token]: ) -class TokenObtainPairOutput(Schema): +class TokenObtainPairOutput(AuthUserSchema): refresh: str access: str - username: str class TokenObtainPairSerializer(TokenObtainSerializer): @@ -97,9 +99,8 @@ def output_schema(self): return TokenObtainPairOutput(**self.dict(exclude={"password"})) -class TokenObtainSlidingOutput(Schema): +class TokenObtainSlidingOutput(AuthUserSchema): token: str - username: str class TokenObtainSlidingSerializer(TokenObtainSerializer): From 67716a3619ea805f3bf70e89c77c668b590c993c Mon Sep 17 00:00:00 2001 From: Pavel Dorovskoy Date: Tue, 15 Mar 2022 17:20:54 -0400 Subject: [PATCH 2/3] Bumped version --- ninja_jwt/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ninja_jwt/__init__.py b/ninja_jwt/__init__.py index ef85333e7..5fef25e1f 100644 --- a/ninja_jwt/__init__.py +++ b/ninja_jwt/__init__.py @@ -1,3 +1,3 @@ """Django Ninja JWT - JSON Web Token for Django-Ninja""" -__version__ = "5.1.8" +__version__ = "5.1.9" From d09bc97dadc919fb8727af35638e97ea34d64072 Mon Sep 17 00:00:00 2001 From: Pavel Date: Sat, 19 Mar 2022 15:35:34 -0400 Subject: [PATCH 3/3] Switched to ModelSchema to avoid extra import --- ninja_jwt/schema.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ninja_jwt/schema.py b/ninja_jwt/schema.py index f65d82736..6e8ad72ab 100644 --- a/ninja_jwt/schema.py +++ b/ninja_jwt/schema.py @@ -4,11 +4,11 @@ from django.contrib.auth import authenticate, get_user_model from django.contrib.auth.models import AbstractUser, update_last_login from django.utils.translation import gettext_lazy as _ -from ninja.orm import create_schema -from ninja_jwt.utils import token_error from ninja_schema import ModelSchema, Schema from pydantic import root_validator +from ninja_jwt.utils import token_error + from . import exceptions from .settings import api_settings from .tokens import RefreshToken, SlidingToken, Token, UntypedToken @@ -19,7 +19,10 @@ user_name_field = get_user_model().USERNAME_FIELD # type: ignore -AuthUserSchema = create_schema(get_user_model(), fields=[user_name_field]) +class AuthUserSchema(ModelSchema): + class Config: + model = get_user_model() + include = [user_name_field] class TokenObtainSerializer(ModelSchema):