From 8bda95878c7dcbd01d8375ae233b869f2d331eff Mon Sep 17 00:00:00 2001
From: Dan Braghis <dan.braghis@torchbox.com>
Date: Wed, 10 Jan 2018 17:07:26 +0000
Subject: [PATCH] Initial setup for django social auth

---
 .../apply/users/templates/users/login.html    |  2 ++
 opentech/settings/base.py                     | 20 +++++++++++++++++++
 opentech/urls.py                              |  1 +
 requirements.txt                              |  2 ++
 4 files changed, 25 insertions(+)

diff --git a/opentech/apply/users/templates/users/login.html b/opentech/apply/users/templates/users/login.html
index e2355d27b..758c54113 100644
--- a/opentech/apply/users/templates/users/login.html
+++ b/opentech/apply/users/templates/users/login.html
@@ -9,4 +9,6 @@
     {{ form.as_p }}
     <button type="submit">Login</button>
   </form>
+
+  <a href="{% url "social:begin" "google-oauth2" %}">Google+</a>
 {% endblock %}
diff --git a/opentech/settings/base.py b/opentech/settings/base.py
index ced6888bc..b3b9d40e4 100644
--- a/opentech/settings/base.py
+++ b/opentech/settings/base.py
@@ -31,6 +31,8 @@ INSTALLED_APPS = [
     'opentech.public.standardpages',
     'opentech.public.utils',
 
+    'social_django',
+
     'wagtail.contrib.modeladmin',
     'wagtail.contrib.postgres_search',
     'wagtail.contrib.settings',
@@ -93,6 +95,8 @@ TEMPLATES = [
                 'django.contrib.messages.context_processors.messages',
                 'wagtail.contrib.settings.context_processors.settings',
                 'opentech.public.utils.context_processors.global_vars',
+                'social_django.context_processors.backends',
+                'social_django.context_processors.login_redirect',
             ],
         },
     },
@@ -185,6 +189,12 @@ AUTH_USER_MODEL = 'users.User'
 LOGIN_URL = 'users:login'
 LOGIN_REDIRECT_URL = '/'
 
+AUTHENTICATION_BACKENDS = (
+    'social_core.backends.google.GoogleOAuth2',
+
+    'django.contrib.auth.backends.ModelBackend',
+)
+
 # Logging
 
 LOGGING = {
@@ -263,3 +273,13 @@ ESI_ENABLED = False
 # Custom settings
 
 ENABLE_STYLEGUIDE = False
+
+# Social Auth
+SOCIAL_AUTH_URL_NAMESPACE = 'social'
+SOCIAL_AUTH_GOOGLEOAUTH2_WHITELISTED_DOMAINS = ['opentechfund.org']
+
+# Set the Google OAuth2 credentials in ENV variables or local.py
+# To create a new set of credentials, go to https://console.developers.google.com/apis/credentials
+# Make sure the Google+ API is enabled for your API project
+SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ''
+SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ''
diff --git a/opentech/urls.py b/opentech/urls.py
index f15ca87d8..9048a2eed 100644
--- a/opentech/urls.py
+++ b/opentech/urls.py
@@ -22,6 +22,7 @@ urlpatterns = [
     url('^sitemap\.xml$', sitemap),
     url('^', include(public_urls)),
     url('^', include(apply_urls)),
+    url('^', include('social_django.urls', namespace='social')),
 ]
 
 
diff --git a/requirements.txt b/requirements.txt
index b4faca247..7f3c62e04 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -12,6 +12,8 @@ factory_boy==2.9.2
 wagtail_factories==0.3.0
 flake8
 
+social_auth_app_django-2.1.0=2.1.0
+
 # Production dependencies
 dj-database-url==0.4.1
 whitenoise==2.0.4
-- 
GitLab