Skip to content

Tests

Codecov

Pypi

contributions welcome

Pypi downloads

Python versions

Strawberry-django Social Auth

Django social authentication with Strawberry using Social Django.

About

This Library was inspired by Django-graphql-social-auth.

Django Social Auth for Strawberry Graphql engine.

Docs can be found here

Features

  • Awesome docs!
  • Social Auth
  • Profile pic's URL storage in User's model
  • Relay Support (Coming Soon...)

Installation:

pip install strawberry-django-social-auth
- Add this for Avatar support in settings.py
SOCIAL_AUTH_PIPELINE = [
    ...
    'gql_social_auth.pipeline.get_avatar',  # Get Avatar Pipeline
]

Usage:

  1. Use built-In Mutation
    @strawberry.type
    class Mutation:
        social_auth = mutations.SocialAuth.field
    
    schema = strawberry.Schema(query=Query, mutation=Mutation)
    
  2. Customize the Usage of Mutation using the decorator
    from gql_social_auth.decorators import social_auth
    from gql_social_auth.types import SocialAuthInput
    
    @strawberry.type
    class CustomMutation:
        @strawberry.mutation
        @social_auth
        def social_auth(self, info: Info, _input: SocialAuthInput, user, errors) -> CustomReturnType:
            # user: User object from model
            # errors: If any errors occurred during the process of getting the social auth
            # Note: Any of the user or errors is None at a time, both can't be None at the same time...
            if errors is not None:
                # Handle Error here
            # Use user Object here... 
    

Calling:

mutation SocialAuth($provider: String!, $accessToken: String!){
    socialAuth(provider: $provider, accessToken: $accessToken){
        uid
        avatar
        extraData
        errors
        success
        refreshToken {
            created
            isExpired
            expiresAt
            token
            revoked
        }
        token {
            token
            payload {
                exp
                origIat
            }
        }
        user {
            email
            archived
            dateJoined
            firstName
            isActive
            id
            isStaff
            isSuperuser
            lastLogin
            lastName
            logentrySet {
                pk
            }
            status {
                archived
                verified
            }
            verified
        }
      }
    }

Contributing

See CONTRIBUTING.md