Description
Abstract all the basic logic of handling user accounts out of your app,
so you don't need to think about it and can get up and running faster.
No lock-in. When you are ready to implement your own code or this package
is not up to your expectations , it's easy to extend or switch to
your implementation.
django-graphql-auth alternatives and similar packages
Based on the "Authentication" category.
Alternatively, view django-graphql-auth alternatives based on common mentions on social networks and blogs.
-
django-allauth
Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. -
python-oauth2
A fully tested, abstract interface to creating OAuth clients and servers. -
django-oauth-toolkit
OAuth2 goodies for the Djangonauts! -
authlib
The ultimate Python library in building OAuth, OpenID Connect clients and servers. JWS,JWE,JWK,JWA,JWT included. -
OAuthLib
A generic, spec-compliant, thorough implementation of the OAuth request-signing logic -
Flask-OAuthlib
YOU SHOULD USE https://github.com/lepture/authlib -
Python Social Auth
Python Social Auth - Application - Django -
Authomatic
Simple yet powerful authorization / authentication client library for Python web applications. -
django-oauth2-provider
Provide OAuth2 access to your app -
Sanic JWT
Authentication, JWT, and permission scoping for Sanic -
python-jwt
Python module for generating and verifying JSON Web Tokens -
jose
Python implementation of the Javascript Object Signing and Encryption (JOSE) framework (https://datatracker.ietf.org/wg/jose/charter/) -
python-jws
python implementation of JSON Web Signatures
Write Clean Python Code. Always.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of django-graphql-auth or a related project?
README
Django GraphQL Auth
Django registration and authentication with GraphQL.
Demo
About
Abstract all the basic logic of handling user accounts out of your app, so you don't need to think about it and can get up and running faster.
No lock-in. When you are ready to implement your own code or this package is not up to your expectations , it's easy to extend or switch to your implementation.
Documentation
Documentation is available at read the docs.
Features
- [x] Awesome docs :tada:
- [x] Fully compatible with Relay
- [x] Works with default or custom user model
- [x] JWT authentication (with Django GraphQL JWT)
- [x] User query with filters (with Django Filter and Graphene Django)
- [x] User registration with email verification
- [x] Add secondary email, with email verification too
- [x] Resend activation email
- [x] Retrieve/Update user
- [x] Archive user
- [x] Permanently delete user or make it inactive
- [x] Turn archived user active again on login
- [x] Track user status (archived, verified, secondary email)
- [x] Password change
- [x] Password reset through email
- [x] Revoke user refresh tokens on account archive/delete/password change/reset
- [x] All mutations return
success
anderrors
- [x] Default email templates (you will customize though)
- [x] 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: "[email protected]",
username: "new_user",
password1: "123456super",
password2: "123456super",
) {
success,
errors,
token,
refreshToken
}
}
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,
errors
}
}
Now user is verified.
u.status.verified
# True
Check the installation guide or jump to the quickstart. Or if you prefer, browse the api.
Contributing
See CONTRIBUTING.md