Metadata-Version: 2.1
Name: django_firebase_scrypt
Version: 0.0.1
Summary: A Django password hasher to use for users imported from Firebase
Home-page: https://github.com/mcsimps2/django-firebase-scrypt
Author: Matthew Simpson
Author-email: mcsimps2@gmail.com
License: UNKNOWN
Description: # django_firebase_scrypt
        A Django password hasher based off scrypt to use for user accounts imported from Firebase.
        
        # Installation
        Install dependencies according to your Python version and OS:
        ```
        # Debian/Ubuntu
        $ sudo apt-get install build-essential libssl-dev python-dev
        
        # Fedora, RHEL
        $ sudo yum install gcc openssl-devel python-devel
        
        # Alpine Linux (Docker Containers)
        $ apk add gcc openssl-dev python-dev
        
        # (If you're on Python3, install the Python3 versions of the above packages)
        
        # Mac
        # Without setting the flags below, install will fail to find the necessary files
        $ brew install openssl
        $ export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
        $ export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"
        ```
        
        Then install this package
        ```
        pip install django_firebase_scrypt
        ```
        
        # Usage
        Add this to your hashers `settings.py` like so
        ```
        PASSWORD_HASHERS = (
          'django_firebase_scrypt.FirebaseScryptPasswordHasher',
          'django.contrib.auth.hashers.PBKDF2PasswordHasher',
          'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
          'django.contrib.auth.hashers.SHA1PasswordHasher',
          'django.contrib.auth.hashers.MD5PasswordHasher',
          'django.contrib.auth.hashers.CryptPasswordHasher',
          'django.contrib.auth.hashers.Argon2PasswordHasher',
          'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
        )
        
        # Retrieve these from  the Firebase console - see https://firebaseopensource.com/projects/firebase/scrypt/
        FIREBASE_SIGNER_KEY = "jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA=="
        FIREBASE_SALT_SEPARATOR = "Bw=="
        FIREBASE_ROUNDS = 8
        FIREBASE_MEMCOST = 14
        ```
        
        
        You can also move `FirebaseScryptPasswordHasher` to the bottom of your hashers if you only want to use it to validate 
        old, migrated hashes instead of generating them for new users.
        
        # Migration
        Migrate your Firebase users to Django.  You can do so as follows:
        ```
        # Grab your users and their password hashes using the auth:export command
        $ auth:export users.json
        ```
        
        ```
        import json
        
        import django
        django.setup()
        from django.contrib.auth import get_user_model
        
        from django_firebase_scrypt import FirebaseScryptPasswordHasher
        
        User = get_user_model()
        
        with open("users.json", "r") as user_file:
            firebase_users = json.load(user_file)["users"]
        
        for firebase_user in firebase_users:
            django_password = f"{FirebaseScryptPasswordHasher.algorithm}${firebase_user['salt']}${firebase_user['passwordHash']}"
            django_user = User(email=firebase_user["email"], password=django_password, ...any_other_user_fields)
            django_user.save()
        ```
        
        
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Framework :: Django :: 3.0
Classifier: License :: OSI Approved :: MIT License
Description-Content-Type: text/markdown
