Strawberry-django Auth
Django registration and authentication with Strawberry.
Demo
About
This Library was inspired by Django-graphql-auth.
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 you 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.
Docs can be found here
Features
- [x] Awesome docs!
- [x] Captcha validation (with extra
strawberry-django-auth[captcha]
) - [x] Async/Sync supported!
- [x] Works with default or custom user model
- [x] Builtin JWT authentication using PyJWT
- [x] User registration with email verification
- [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)
- [x] Password change
- [x] Password reset through email
- [x] Revoke user 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
- [x] Passwordless registration
Full schema features
@strawberry.type
class Mutation:
verify_token = mutations.VerifyToken.field
update_account = mutations.UpdateAccount.field
archive_account = mutations.ArchiveAccount.field
delete_account = mutations.DeleteAccount.field
password_change = mutations.PasswordChange.field
swap_emails = mutations.SwapEmails.field
# these are mutation that does not require authentication.
captcha = Captcha.field
token_auth = mutations.ObtainJSONWebToken.field
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
refresh_token = mutations.RefreshToken.field
revoke_token = mutations.RevokeToken.field
verify_secondary_email = mutations.VerifySecondaryEmail.field
schema = strawberry.Schema(query=Query, mutation=Mutation)
Contributing
See CONTRIBUTING.md