Skip to main content

Graphql and relay authentication with Graphene for Django.

Project description

Django Graphene Auth

Django GraphQL registration and authentication compatible with the latest versions of Django, Django GraphQL JWT

downloads Codecov Coverage Pypi Documentation Status

About

This project was based on the forked repository from Django GraphQL Auth - created by Pedro Bern (thanks so much for a great job).

The reason I decided to create this project is that the original doesn't support the newer versions of django, graphene-django and django-graphql-jwt. Futhermore, it appears that the original one will not be further developed in the near future.

Documentation

Documentation is available at read the docs.

Features

  • Docs
  • Fully compatible with Relay
  • Works with default or custom user model
  • JWT authentication (with Django GraphQL JWT)
  • User query with filters (with Django Filter and Graphene Django)
  • User registration with email verification
  • Add secondary email, with email verification too
  • Resend activation email
  • Retrieve/Update user
  • Archive user
  • Permanently delete user or make it inactive
  • Turn archived user active again on login
  • Track user status (archived, verified, secondary email)
  • Password change
  • Password reset through email
  • Revoke user refresh tokens on account archive/delete/password change/reset
  • All mutations return success and errors
  • Default email templates (you will customize though)
  • Customizable, no lock-in

Full Schema

import graphene

from graphql_auth.schema import UserQuery, MeQuery
from graphql_auth import mutations

class AuthMutation(graphene.ObjectType):
    register = mutations.Register.Field()
    verify_account = mutations.VerifyAccount.Field()
    resend_activation_email = mutations.ResendActivationEmail.Field()
    send_password_reset_email = mutations.SendPasswordResetEmail.Field()
    password_reset = mutations.PasswordReset.Field()
    password_set = mutations.PasswordSet.Field() # For passwordless registration
    password_change = mutations.PasswordChange.Field()
    update_account = mutations.UpdateAccount.Field()
    archive_account = mutations.ArchiveAccount.Field()
    delete_account = mutations.DeleteAccount.Field()
    send_secondary_email_activation =  mutations.SendSecondaryEmailActivation.Field()
    verify_secondary_email = mutations.VerifySecondaryEmail.Field()
    swap_emails = mutations.SwapEmails.Field()
    remove_secondary_email = mutations.RemoveSecondaryEmail.Field()

    # django-graphql-jwt inheritances
    token_auth = mutations.ObtainJSONWebToken.Field()
    verify_token = mutations.VerifyToken.Field()
    refresh_token = mutations.RefreshToken.Field()
    revoke_token = mutations.RevokeToken.Field()


class Query(UserQuery, MeQuery, graphene.ObjectType):
    pass


class Mutation(AuthMutation, graphene.ObjectType):
    pass


schema = graphene.Schema(query=Query, mutation=Mutation)

Relay

Import mutations from the relay module:

from graphql_auth import relay

class AuthMutation(graphene.ObjectType):
   register = relay.Register.Field()
   # ...

Example

Handling user accounts becomes super easy.

mutation {
  register(
    email: "new_user@email.com",
    username: "new_user",
    password1: "123456super",
    password2: "123456super",
  ) {
    success,
    token,  # optional, depending on settings of GRAPHQL_AUTH['ALLOW_LOGIN_NOT_VERIFIED']
    refreshToken  # optional, depending on settings of GRAPHQL_JWT['JWT_LONG_RUNNING_REFRESH_TOKEN']
  }
}

Check the status of the new user:

u = UserModel.objects.last()
u.status.verified
# False

During the registration, an email with a verification link was sent.

mutation {
  verifyAccount(
    token:"<TOKEN ON EMAIL LINK>",
  ) {
    success
  }
}

Now user is verified.

u.status.verified
# True

Check the installation guide. Or if you prefer, browse the api.

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

django-graphene-auth-code-1.0.3.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_graphene_auth_code-1.0.3-py2.py3-none-any.whl (28.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django-graphene-auth-code-1.0.3.tar.gz.

File metadata

File hashes

Hashes for django-graphene-auth-code-1.0.3.tar.gz
Algorithm Hash digest
SHA256 c634ab136941000bc59e20d6752c4c408fae9cd47b4d7e7f157b5850868e3196
MD5 f27cdac13c70d06dfbc84763d99ecd6a
BLAKE2b-256 829af4dbfef7838f0b2a1a622a8985429ad111bf5845e30f48734d84419771b7

See more details on using hashes here.

File details

Details for the file django_graphene_auth_code-1.0.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_graphene_auth_code-1.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fc1f57cb9665a7f8964f44c89251b9223c845846fa5731f9d51e8fc135536c30
MD5 3b2d6327ca1713beeb8173e8c2e10b2d
BLAKE2b-256 b51c9d6fd6472c054b23dc0eb060469045c8dde0a99306a88201c1ede89c0cc4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page