Skip to content

eba-alemayehu/graphene-django-firebase-auth

 
 

Repository files navigation

graphene-django-firebase-auth

Authentication provider for graphene-django and Firebase's Authentication service.

Note this is a WIP and abandoned project since I never ended up using Firebase. But the code is still a good starting point as of writing this.

Partially inspired by django-firebase-auth for Django REST framework.

This app is used with Firebase Authentication on a client.

Compatibility

This code has only been tested with Python 3.7.0 and Django 2.1.2.

Installing

  1. Install the app:
pipenv install graphene-django-firebase-auth
  1. Download the JSON file from your Firebase console with your account's credentials.

  2. Set FIREBASE_KEY_FILE in your project's settings to the path of the credentials file:

import os
FIREBASE_KEY_FILE = os.path.join(BASE_DIR, 'path/to/firebase-credentials.json')
  1. Add the authentication backend to AUTHENTICATION_BACKENDS:
AUTHENTICATION_BACKENDS = ['firebase_auth.authentication.FirebaseAuthentication']
  1. Add firebase_auth to INSTALLED_APPS:
INSTALLED_APPS = [
'firebase_auth',
]
  1. Add FirebaseAuthMixin to your AUTH_USER_MODEL:
class User(PermissionsMixin, FirebaseAuthMixin):
  1. Build and run your DB migrations to add the changes:
./manage.py makemigrations
./manage.py migrate

Sending tokens on the client

Your client will need to send an Authorization: Bearer token on each request. How you do this depends on your client and is outside the scope of this documentation.

Developing

Setting up your environment

  1. Install the dependencies:
pipenv install -d
  1. Download the JSON file from your Firebase console with your account's credentials.

  2. Create an .env file using .env.example as a template. Make sure to specify the path to the file in the previous step.

  3. Enter the virtual environment:

./manage.py shell

Other commands

# Run the tests
./manage.py test
# Lint the code
./lint.sh

About

Authentication provider for graphene-django and Google Firebase's Authentication service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.7%
  • Shell 0.3%