allauth_authentic2: add setting to give super-admin power to user having a specific role

This commit is contained in:
Benjamin Dauvergne 2014-04-07 11:02:07 +02:00
parent 84f76d34af
commit fa6873c3c4
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,27 @@
import sys
class AppSettings(object):
__defaults = {
'ADMIN_ROLE': None,
}
def __init__(self, prefix):
self.prefix = prefix
def __getattr__(self, name):
if name in self.__defaults:
return self._settings(name, self.__defaults[name])
else:
return self._settings(name)
def _settings(self, name, default=Ellipsis):
from django.conf import settings
if default is Ellipsis:
return getattr(settings, self.prefix + name)
else:
return getattr(settings, self.prefix + name, default)
app_settings = AppSettings('ALLAUTH_A2_')
app_settings.__name__ = __name__
sys.modules[__name__] = app_settings

View File

@ -3,6 +3,8 @@ from allauth.socialaccount.providers.base import ProviderAccount
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
from allauth.account.models import EmailAddress
from . import app_settings
class Authentic2Account(ProviderAccount):
def to_str(self):
return self.account.uid
@ -28,6 +30,15 @@ class Authentic2Provider(OAuth2Provider):
primary=True)]
return ret
def sociallogin_from_response(self, request, response):
sociallogin = self(Authentic2Provider, self).sociallogin_from_response(
request, response)
if app_settings.ADMIN_ROLE in response.get('role', []):
sociallogin.account.user.is_superuser = True
sociallogin.account.user.is_staff = True
return sociallogin
providers.registry.register(Authentic2Provider)