Authentication and registration with django graphene and JWT
Project description
Authentication and registration using graphene and JWT
Documentation
Quickstart
Install Graphene JWT Auth Registration:
pip install graphene-jwt-auth-registration
Add it to your INSTALLED_APPS:
INSTALLED_APPS = [
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sites",
...
"djoser",
"graphene_django",
"gjwt_auth",
]
Set AUTH_USER_MODEL:
AUTH_USER_MODEL = "gjwt_auth.User"
Add JSONWebTokenBackend backend to your AUTHENTICATION_BACKENDS:
AUTHENTICATION_BACKENDS = [
'graphql_jwt.backends.JSONWebTokenBackend',
'django.contrib.auth.backends.ModelBackend',
]
Add the JSONWebTokenMiddleware:
GRAPHENE = {
'SCHEMA': 'yourproject.schema.schema',
'MIDDLEWARE': [
'graphql_jwt.middleware.JSONWebTokenMiddleware',
],
}
Create graphene schema in yourproject/schema.py:
import graphene
import graphql_jwt
from gjwt_auth.mutations import (
Activate,
DeleteAccount,
Register,
ResetPassword,
ResetPasswordConfirm,
)
from gjwt_auth.schema import User, Viewer
class RootQuery(graphene.ObjectType):
viewer = graphene.Field(Viewer)
def resolve_viewer(self, info, **kwargs):
if info.context.user.is_authenticated:
return info.context.user
return None
class Mutation(graphene.ObjectType):
activate = Activate.Field()
register = Register.Field()
deleteAccount = DeleteAccount.Field()
resetPassword = ResetPassword.Field()
resetPasswordConfirm = ResetPasswordConfirm.Field()
token_auth = graphql_jwt.ObtainJSONWebToken.Field()
verify_token = graphql_jwt.Verify.Field()
refresh_token = graphql_jwt.Refresh.Field()
schema = graphene.Schema(query=RootQuery, mutation=Mutation)
Set djoser setttings:
DOMAIN = os.environ.get('DJANGO_DJOSER_DOMAIN', 'localhost:3000')
SITE_NAME = os.environ.get('DJANGO_DJOSER_SITE_NAME', 'my site')
DJOSER = {
'PASSWORD_RESET_CONFIRM_URL': '?action=set-new-password&uid={uid}&token={token}',
'ACTIVATION_URL': 'activate?uid={uid}&token={token}',
'SEND_ACTIVATION_EMAIL': True,
}
}
Add Graphenes URL patterns:
from django.conf.urls import url
from django.views.decorators.csrf import csrf_exempt
from graphene_django.views import GraphQLView
...
urlpatterns = [
...
url(r'^graphql', csrf_exempt(GraphQLView.as_view(graphiql=True))),
...
]
Running Tests
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
Credits
Tools used in rendering this package:
History
0.1.0 (2019-06-04)
First release on PyPI.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file graphene-jwt-auth-registration-1.0.0.tar.gz
.
File metadata
- Download URL: graphene-jwt-auth-registration-1.0.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28e4f30d0f58914d62415e7fcd5549d05c30c740693a8ef48cc5dd3e5f753317 |
|
MD5 | db49f5d35d63726c961692083ee0f590 |
|
BLAKE2b-256 | 1fde94bdb25df249c53ea3efa1792db18e51a35845def66c451c8c7e7da53911 |
File details
Details for the file graphene_jwt_auth_registration-1.0.0-py2.py3-none-any.whl
.
File metadata
- Download URL: graphene_jwt_auth_registration-1.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 146a91f098d0f4769d62ccaef9d2a9f3a2193ecdc0ad39f59a86c6013eecc81b |
|
MD5 | 210686dd36cb6ca53996958817e41067 |
|
BLAKE2b-256 | 5a0168fb9be4e954ee593f4c6bfc665267c92b2cce958efad96f2bf66e3e558c |