Skip to main content

Graphql authentication system with Strawberry for Django.

Project description

Tests Pypi contributions welcome # Strawberry-django Auth Django registration and authentication with Strawberry.

Demo

Demo Video

Demo Video

About

This Library is the strawberry version of 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 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

  • Awesome docs:tada:

  • ☐ Fully compatible with Relay

  • ☒ Works with default or custom user model

  • ☒ JWT authentication (withstrawberry-django-jwt)

  • ☒ User query with filters (withDjango FilterandGraphene 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 features

import strawberry
from gqlauth import mutations


@strawberrry.type
class AuthMutation:
    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


schema = strawberry.schema(mutation=AuthMutation)

User relay queries

Currently not supported

excpect to find it here when strawberry will nativly support relay

Example

Handling user accounts becomes super easy.

mutation {
  register(
    email: "new_user@email.com",
    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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

strawberry_django_auth-0.2.2-py2.py3-none-any.whl (583.0 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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