allauth_authentic2: add setting to give super-admin power to user having a specific role
This commit is contained in:
parent
e7bb03920f
commit
dcb509002f
|
@ -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
|
||||
|
11
provider.py
11
provider.py
|
@ -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)
|
||||
|
|
Reference in New Issue