From c7515517dace74ea24346960d15af453145864ae Mon Sep 17 00:00:00 2001 From: j Date: Tue, 12 Jan 2016 14:04:34 +0530 Subject: [PATCH] remove persona support --- pandora/config.0xdb.jsonc | 1 - pandora/user/persona.py | 87 ---------------------------- pandora/user/views.py | 5 +- static/js/mainMenu.js | 2 - static/js/persona.js | 115 -------------------------------------- 5 files changed, 1 insertion(+), 209 deletions(-) delete mode 100644 pandora/user/persona.py delete mode 100644 static/js/persona.js diff --git a/pandora/config.0xdb.jsonc b/pandora/config.0xdb.jsonc index 61076b6a..621e0047 100644 --- a/pandora/config.0xdb.jsonc +++ b/pandora/config.0xdb.jsonc @@ -812,7 +812,6 @@ */ "menuExtras": [ "user", - //"persona", //"locale", "reload" ], diff --git a/pandora/user/persona.py b/pandora/user/persona.py deleted file mode 100644 index 17722679..00000000 --- a/pandora/user/persona.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- -# vi:si:et:sw=4:sts=4:ts=4 - -from django.conf import settings -from django.utils.http import same_origin -from django.core.exceptions import ImproperlyConfigured -from django.contrib.auth.models import User -from django.contrib import auth -try: - from django.utils.encoding import smart_bytes -except ImportError: - from django.utils.encoding import smart_str as smart_bytes - -from ox.django.shortcuts import json_response -from ox.utils import json -import requests - -import models - - -def signin(request, data): - response = json_response({ - 'errors': { - 'email': 'Failed to verify email' - } - }) - verification_data = verify(request, data['assertion']) - if verification_data: - email = verification_data['email'] - username = data.get('username') - qs = User.objects.filter(email__iexact=email) - if qs.count() == 0: - if not username: - response = json_response({ - 'errors': { - 'username': 'New user, please provide username' - } - }) - return response - user = User() - user.email = email - user.username = username - user.save() - else: - user = qs[0] - if user.is_active: - request.session['ui'] = '{}' - #fixme. use custom backend instead? - user.backend = 'django.contrib.auth.backends.ModelBackend' - auth.login(request, user) - user_json = models.init_user(user, request) - response = json_response({ - 'user': user_json - }) - else: - response = json_response({ - 'errors': { - 'email': 'User Disabled' - } - }) - return response - -def get_audience(request): - try: - audiences = settings.BROWSERID_AUDIENCES - except AttributeError: - raise ImproperlyConfigured('Required setting BROWSERID_AUDIENCES not found!') - - protocol = 'https' if request.is_secure() else 'http' - host = '%s://%s' % (protocol, request.get_host()) - for audience in audiences: - if same_origin(host, audience): - return audience - - raise ImproperlyConfigured('No audience could be found in BROWSERID_AUDIENCES for host `{0}`.' - .format(host)) - -def verify(request, assertion): - audience = get_audience(request) - data = {'assertion': assertion, 'audience': audience} - resp = requests.post('https://verifier.login.persona.org/verify', data=data, verify=True) - if resp.ok: - verification_data = json.loads(resp.content) - if verification_data['status'] == 'okay': - return verification_data - return None - diff --git a/pandora/user/views.py b/pandora/user/views.py index eb9ab625..7601cfeb 100644 --- a/pandora/user/views.py +++ b/pandora/user/views.py @@ -27,7 +27,6 @@ from changelog.models import add_changelog import models from decorators import capability_required_json -import persona def get_user_or_404(data): @@ -62,9 +61,7 @@ def signin(request, data): } see: signout, signup ''' - if 'assertion' in data: - response = persona.signin(request) - elif 'username' in data and 'password' in data: + if 'username' in data and 'password' in data: data['username'] = data['username'].strip() if settings.AUTH_CHECK_USERNAME: qs = User.objects.filter(username__iexact=data['username']) diff --git a/static/js/mainMenu.js b/static/js/mainMenu.js index cd718c4f..b8702267 100644 --- a/static/js/mainMenu.js +++ b/static/js/mainMenu.js @@ -19,8 +19,6 @@ pandora.ui.mainMenu = function() { return pandora.$ui.localeButton = pandora.ui.localeButton(); } else if (menuExtra == 'reload') { return pandora.$ui.loadingIcon = pandora.ui.loadingIcon(); - } else if (menuExtra == 'persona') { - return pandora.$ui.personaButton = pandora.ui.personaButton(); } }), id: 'mainMenu', diff --git a/static/js/persona.js b/static/js/persona.js deleted file mode 100644 index 0a4250a6..00000000 --- a/static/js/persona.js +++ /dev/null @@ -1,115 +0,0 @@ -'use strict'; - -pandora.persona = {}; - -pandora.persona.init = function(callback) { - - (!navigator.id ? Ox.getFile : Ox.noop)( - 'https://login.persona.org/include.js', - function() { - navigator.id.watch({ - loggedInUser: pandora.user.email ? pandora.user.email : null, - onlogin: onlogin, - onlogout: onlogout - }); - callback && callback(); - } - ); - - function getUsername(callback) { - pandora.$ui.accountDialog = pandora.ui.accountDialog('username').open(); - pandora.$ui.accountForm.bindEvent({ - submit: function(data) { - callback(data.values.username); - pandora.$ui.accountDialog.close(); - } - }); - return pandora.$ui.accountDialog; - } - - function onlogin(assertion, username) { - pandora.api.signin({ - assertion: assertion, - username: username - }, function(result) { - if (!result.data.errors && result.status.code == 200) { - pandora.signin(result.data); - } else if (!username - && result.data.errors && result.data.errors.username) { - getUsername(function(username) { - onlogin(assertion, username); - }); - } else { - onlogout(); - //fixme: show some error - } - }); - } - - function onlogout() { - pandora.UI.set({page: ''}); - pandora.api.signout({}, function(result) { - pandora.signout(result.data); - }); - } - -}; - -pandora.persona.signin = function() { - - navigator.id.request(); - -}; - -pandora.persona.signout = function() { - - navigator.id.logout(); - -}; - -pandora.ui.personaButton = function() { - - var isGuest = pandora.user.level == 'guest', - that = Ox.Element({ - tooltip: Ox._( - isGuest ? 'Click to sign with Persona' - : 'Click to open preferences or doubleclick to sign out' - ) - }) - .css({marginLeft: '3px'}) - .bindEvent({ - singleclick: function() { - isGuest - ? pandora.persona.signin() - : pandora.UI.set({page: 'preferences'}); - }, - doubleclick: function() { - pandora.UI.set({page: isGuest ? 'signin' : 'signout'}); - } - }); - - pandora.persona.init(); - $('
') - .addClass('OxLight') - .css({ - float: 'left', - marginTop: '2px', - fontSize: '9px' - }) - .html( - isGuest ? Ox._('Sign in') - : Ox.encodeHTMLEntities(pandora.user.username) - ) - .appendTo(that); - - Ox.Button({ - style: 'symbol', - title: 'user', - type: 'image' - }) - .css({float: 'left'}) - .appendTo(that); - - return that; - -};