Source code for graphql_jwt.relay

from django.contrib.auth import get_user_model

import graphene

from . import mixins
from .decorators import token_auth
from .refresh_token.relay import DeleteRefreshTokenCookie, Revoke

__all__ = [
    "JSONWebTokenMutation",
    "ObtainJSONWebToken",
    "Verify",
    "Refresh",
    "Revoke",
    "DeleteRefreshTokenCookie",
]


[docs]class JSONWebTokenMutation(mixins.ObtainJSONWebTokenMixin, graphene.ClientIDMutation): class Meta: abstract = True @classmethod def Field(cls, *args, **kwargs): cls._meta.arguments["input"]._meta.fields.update( { get_user_model().USERNAME_FIELD: graphene.InputField( graphene.String, required=True, ), "password": graphene.InputField(graphene.String, required=True), }, ) return super().Field(*args, **kwargs) @classmethod @token_auth def mutate_and_get_payload(cls, root, info, **kwargs): return cls.resolve(root, info, **kwargs)
class ObtainJSONWebToken(mixins.ResolveMixin, JSONWebTokenMutation): """Obtain JSON Web Token mutation""" class Verify(mixins.VerifyMixin, graphene.ClientIDMutation): class Input: token = graphene.String() @classmethod def mutate_and_get_payload(cls, *args, **kwargs): return cls.verify(*args, **kwargs) class Refresh(mixins.RefreshMixin, graphene.ClientIDMutation): class Input(mixins.RefreshMixin.Fields): """Refresh Input""" @classmethod def mutate_and_get_payload(cls, *args, **kwargs): return cls.refresh(*args, **kwargs) class DeleteJSONWebTokenCookie( mixins.DeleteJSONWebTokenCookieMixin, graphene.ClientIDMutation, ): @classmethod def mutate_and_get_payload(cls, *args, **kwargs): return cls.delete_cookie(*args, **kwargs)