summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2014-09-17 15:34:36 +0700
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2014-09-17 15:34:36 +0700
commitb36bad85481d4f763daa10225bad0713a2371497 (patch)
tree412612a72643382a2b14ed8fc6460f08e8e66000
parent5d575b7dcd10c29c0d1946dd9a6d415501a90809 (diff)
downloadaskbot-b36bad85481d4f763daa10225bad0713a2371497.tar.gz
askbot-b36bad85481d4f763daa10225bad0713a2371497.tar.bz2
askbot-b36bad85481d4f763daa10225bad0713a2371497.zip
added selection of OpenID/g-Plus/none method for Google login
-rw-r--r--askbot/conf/login_providers.py23
-rw-r--r--askbot/deps/django_authopenid/util.py46
-rw-r--r--askbot/templates/authopenid/providers_javascript.html28
3 files changed, 68 insertions, 29 deletions
diff --git a/askbot/conf/login_providers.py b/askbot/conf/login_providers.py
index e664fe52..dd269f14 100644
--- a/askbot/conf/login_providers.py
+++ b/askbot/conf/login_providers.py
@@ -126,7 +126,7 @@ providers = (
'ClaimID',
'Facebook',
'Flickr',
- 'Google Plus',
+ #'Google Plus',
'Mozilla Persona',
'Twitter',
'LinkedIn',
@@ -146,6 +146,12 @@ DISABLED_BY_DEFAULT = ('LaunchPad', 'Mozilla Persona')
NEED_EXTRA_SETUP = ('Google Plus', 'Twitter', 'Facebook', 'LinkedIn', 'identi.ca',)
+GOOGLE_METHOD_CHOICES = (
+ ('openid', 'OpenID (deprecated)'),
+ ('google-plus', 'Google Plus'),
+ ('disabled', _('disable')),
+)
+
for provider in providers:
if provider == 'local':
provider_string = unicode(_('local password'))
@@ -171,3 +177,18 @@ for provider in providers:
**kwargs
)
)
+
+ if provider == 'local':
+ #add Google settings here as one-off
+ settings.register(
+ livesettings.StringValue(
+ LOGIN_PROVIDERS,
+ 'SIGNIN_GOOGLE_METHOD',
+ default='openid',
+ choices=GOOGLE_METHOD_CHOICES,
+ description=_('Google login'),
+ help_text=_(
+ 'To enable Google-Plus login, OAuth keys are required in the "External keys" section'
+ )
+ )
+ )
diff --git a/askbot/deps/django_authopenid/util.py b/askbot/deps/django_authopenid/util.py
index f05aba31..b1c67b3d 100644
--- a/askbot/deps/django_authopenid/util.py
+++ b/askbot/deps/django_authopenid/util.py
@@ -176,6 +176,19 @@ def use_password_login():
return True
return False
+def is_login_method_enabled(name):
+ name_key = name.upper().replace('-', '_')
+ setting = getattr(askbot_settings, 'SIGNIN_' + name_key + '_ENABLED', None)
+ if setting is not None:
+ return setting
+
+ google_method = askbot_settings.SIGNIN_GOOGLE_METHOD
+ if name == 'google':
+ return google_method == 'openid'
+ elif name == 'google-plus':
+ return google_method == 'google-plus'
+ return False
+
def filter_enabled_providers(data):
"""deletes data about disabled providers from
the input dictionary
@@ -183,9 +196,7 @@ def filter_enabled_providers(data):
delete_list = list()
for provider_key, provider_settings in data.items():
name = provider_settings['name']
- name_key = name.upper().replace('-', '_')
- is_enabled = getattr(askbot_settings, 'SIGNIN_' + name_key + '_ENABLED')
- if is_enabled == False:
+ if not is_login_method_enabled(name):
delete_list.append(provider_key)
for provider_key in delete_list:
@@ -499,18 +510,29 @@ def get_enabled_major_login_providers():
def get_google_user_id(client):
return client.request('me')['id']
- if askbot_settings.GOOGLE_PLUS_KEY and askbot_settings.GOOGLE_PLUS_SECRET:
- data['google-plus'] = {
- 'name': 'google-plus',
+ google_method = askbot_settings.SIGNIN_GOOGLE_METHOD
+ if google_method == 'google-plus':
+ if askbot_settings.GOOGLE_PLUS_KEY and askbot_settings.GOOGLE_PLUS_SECRET:
+ data['google-plus'] = {
+ 'name': 'google-plus',
+ 'display_name': 'Google',
+ 'type': 'oauth2',
+ 'auth_endpoint': 'https://accounts.google.com/o/oauth2/auth',
+ 'token_endpoint': 'https://accounts.google.com/o/oauth2/token',
+ 'resource_endpoint': 'https://www.googleapis.com/plus/v1/people/',
+ 'icon_media_path': '/jquery-openid/images/google.gif',
+ 'get_user_id_function': get_google_user_id,
+ 'extra_auth_params': {'scope': ('profile', 'email', 'openid'), 'openid.realm': askbot_settings.APP_URL}
+ }
+ elif google_method == 'openid':
+ data['google'] = {
+ 'name': 'google',
'display_name': 'Google',
- 'type': 'oauth2',
- 'auth_endpoint': 'https://accounts.google.com/o/oauth2/auth',
- 'token_endpoint': 'https://accounts.google.com/o/oauth2/token',
- 'resource_endpoint': 'https://www.googleapis.com/plus/v1/people/',
+ 'type': 'openid-direct',
'icon_media_path': '/jquery-openid/images/google.gif',
- 'get_user_id_function': get_google_user_id,
- 'extra_auth_params': {'scope': ('profile', 'email', 'openid'), 'openid.realm': askbot_settings.APP_URL}
+ 'openid_endpoint': 'https://www.google.com/accounts/o8/id',
}
+
data['mozilla-persona'] = {
'name': 'mozilla-persona',
'display_name': 'Mozilla Persona',
diff --git a/askbot/templates/authopenid/providers_javascript.html b/askbot/templates/authopenid/providers_javascript.html
index d20f052f..0900d014 100644
--- a/askbot/templates/authopenid/providers_javascript.html
+++ b/askbot/templates/authopenid/providers_javascript.html
@@ -12,25 +12,21 @@
var siteName = '{{settings.APP_SHORT_NAME}}';
var provider_count = {{existing_login_methods|length}};
{% for login_provider in major_login_providers %}
- {%if settings['SIGNIN_' + login_provider.name.upper() + '_ENABLED'] == True %}
- {% if login_provider.extra_token_name %}
- extra_token_name['{{login_provider.name}}'] = '{{ login_provider.extra_token_name|escapejs }}';
- {% endif %}
- {% if login_provider.type == 'password' %}
- create_pw_text['{{login_provider.name}}'] = '{{ login_provider.create_password_prompt|escapejs }}';
- change_pw_text['{{login_provider.name}}'] = '{{ login_provider.change_password_prompt|escapejs }}';
- {% endif %}
+ {% if login_provider.extra_token_name %}
+ extra_token_name['{{login_provider.name}}'] = '{{ login_provider.extra_token_name|escapejs }}';
+ {% endif %}
+ {% if login_provider.type == 'password' %}
+ create_pw_text['{{login_provider.name}}'] = '{{ login_provider.create_password_prompt|escapejs }}';
+ change_pw_text['{{login_provider.name}}'] = '{{ login_provider.change_password_prompt|escapejs }}';
{% endif %}
{% endfor %}
{% for login_provider in minor_login_providers %}
- {% if settings['SIGNIN_' + login_provider.name.upper() + '_ENABLED'] == True %}
-{% if login_provider.extra_token_name %}
- extra_token_name['{{login_provider.name}}'] = '{{ login_provider.extra_token_name|escapejs }}';
- {% endif %}
- {% if login_provider.type == 'password' %}
- create_pw_text['{{login_provider.name}}'] = '{{ login_provider.create_password_prompt|escapejs }}';
- change_pw_text['{{login_provider.name}}'] = '{{ login_provider.change_password_prompt|escapejs }}';
- {% endif %}
+ {% if login_provider.extra_token_name %}
+ extra_token_name['{{login_provider.name}}'] = '{{ login_provider.extra_token_name|escapejs }}';
+ {% endif %}
+ {% if login_provider.type == 'password' %}
+ create_pw_text['{{login_provider.name}}'] = '{{ login_provider.create_password_prompt|escapejs }}';
+ change_pw_text['{{login_provider.name}}'] = '{{ login_provider.change_password_prompt|escapejs }}';
{% endif %}
{% endfor %}
{% if user.is_authenticated() %}