Skip to main content

Simple package for creating and signing users into your Django site using Salesforce as an OAuth provider

Project description

Quick start

Assuming you've already configured an app in your Salesforce instance to serve as an OAuth provider, the following should get you up and running.

Install

pip install django-salesforce-oauth

Settings

Add the app to your INSTALLED_APPS in your django settings (settings.py):

INSTALLED_APPS = [
    # ...
    "django_salesforce_oauth",
]

Add the following required variables to your settings.py:

SCOPES = "YOUR SCOPES"  # space delimited, e.g., "id api refresh_token"
SFDC_CONSUMER_KEY = "YOUR KEY"
SFDC_CONSUMER_SECRET = "YOUR SECRET"
OAUTH_REDIRECT_URI = "{YOUR DOMAIN}/oauth/callback/"

# Optional, but Django provides a default you likely don't want
LOGIN_REDIRECT_URL = "/"

Urls

Add django-salesforce-oauth's urls to your main urls.py.

from django.urls import path, include

urlpatterns = [
    # ...
    path("oauth/", include("django_salesforce_oauth.urls")),
]

Then redirect sign-in requests to the oauth namespace.

View example

from django.shortcuts import redirect

def your_view(request):
    return redirect("oauth")  # or "oauth-sandbox"

Template example

<a href="{% url 'oauth' %}" class="btn btn-primary">Login</a>

Advanced usage

Custom callback

You likely will want to customize what happens after the OAuth flow is complete instead of simply getting or creating a user. This can be done by specifying the following in your settings.py.

CUSTOM_CALLBACK = "path.to.module.your_callback_function"

your_callback_function must accept the following two arguments:

  1. the request object (useful in case you want to handle redirection yourself)
  2. the OAuth object (contains all token and user data)

If you send the user to the oauth view with a query parameter called state, then you must provide a third, optional argument to your custom callback function.

  1. the state parameter. Only requered if you redirect to oauth with ?state=value in your query params.

An example signature is:

def your_callback_function(request, oauth, state=None):
    ...

If you do not return a redirect from your_callback_function, it's expected it will return a user object. In this case the user will then be signed in and redirected to settings.LOGIN_REDIRECT_URL (which you'll most likely want to set in your settings.py).

Customizing the callback URI

By default the view behind the oauth-callback namespace, specified in the django_salesforce_oauth's app's urls.py, is what needs to match settings.OAUTH_REDIRECT_URI. But this can be customized by pointing it to some other url and registering the view wherever you'd like it declared.

# urls.py

from django_salesforce_oauth.views import oauth_callback

urlpatterns = [
    # ...
    # pass {"domain": "test"} to use a sandbox
    path("my/custom/url", oauth_callback, {"domain": "login"}, name="custom-oauth-callback"),
]

Example project

The example project provides a full example of how to use this package, but since it's an integration, there's a few steps to actually running it.

SFDC

Configure a SFDC OAuth app with which you can OAuth against.

.env

Place a .env file inside the project folder that contains the following keys from the OAuth app you configured above:

SFDC_CONSUMER_KEY=some_key
SFDC_CONSUMER_SECRET=secret_stuff

django

run migrations and start the server!


This project uses poetry for dependency management and packaging.

Project details


Download files

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

Source Distribution

django-salesforce-oauth-1.0.0.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_salesforce_oauth-1.0.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file django-salesforce-oauth-1.0.0.tar.gz.

File metadata

  • Download URL: django-salesforce-oauth-1.0.0.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.13 Linux/5.4.0-1086-azure

File hashes

Hashes for django-salesforce-oauth-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a71fdf7a4049d672a417a59b2595321da8ff18fc9ddef98feabc6d9046f23c4c
MD5 8a61c0f6938f9ad5e08f744a827a0135
BLAKE2b-256 495adc2f18837ceb6d564ee5cc13ce8a1385308465e230d4992dd03dfd92644f

See more details on using hashes here.

File details

Details for the file django_salesforce_oauth-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_salesforce_oauth-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a4ea5dc82bb9f95cdd07059bf0dc5ba1db7984e07caa111049887ec965e56db8
MD5 69599f87c980805b4f2c70a968aafaca
BLAKE2b-256 59306a3c1b4f4a0f60ed788ba99a1e5f94c125652f7bae0e3f5b272f2b345d98

See more details on using hashes here.

Supported by

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