mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 20:40:17 +02:00
Consolidate member state checking for easier code reuse
This commit is contained in:
parent
5fb64d8c06
commit
9eba5607d2
@ -1,14 +1,11 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from authentication.models import AuthServicesInfo
|
|
||||||
from authentication.states import NONE_STATE, BLUE_STATE, MEMBER_STATE
|
from authentication.states import NONE_STATE, BLUE_STATE, MEMBER_STATE
|
||||||
|
from authentication.managers import UserState
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
def membership_state(request):
|
def membership_state(request):
|
||||||
if request.user.is_authenticated:
|
return UserState.get_membership_state(request)
|
||||||
auth = AuthServicesInfo.objects.get_or_create(user=request.user)[0]
|
|
||||||
return {'STATE': auth.state}
|
|
||||||
return {'STATE': NONE_STATE}
|
|
||||||
|
|
||||||
|
|
||||||
def states(request):
|
def states(request):
|
||||||
@ -19,6 +16,7 @@ def states(request):
|
|||||||
'MEMBER_BLUE_STATE': [MEMBER_STATE, BLUE_STATE],
|
'MEMBER_BLUE_STATE': [MEMBER_STATE, BLUE_STATE],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def sso(request):
|
def sso(request):
|
||||||
return {
|
return {
|
||||||
'EVE_SSO_CALLBACK_URL': settings.EVE_SSO_CALLBACK_URL,
|
'EVE_SSO_CALLBACK_URL': settings.EVE_SSO_CALLBACK_URL,
|
||||||
|
@ -1,33 +1,23 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from django.contrib.auth.decorators import user_passes_test
|
from django.contrib.auth.decorators import user_passes_test
|
||||||
from authentication.models import AuthServicesInfo
|
from authentication.managers import UserState
|
||||||
from authentication.states import MEMBER_STATE, BLUE_STATE, NONE_STATE
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
|
|
||||||
def _state_required(states, *args, **kwargs):
|
def _state_required(state_test, *args, **kwargs):
|
||||||
def test_func(user):
|
return user_passes_test(state_test, *args, **kwargs)
|
||||||
if user.is_superuser and settings.SUPERUSER_STATE_BYPASS:
|
|
||||||
return True
|
|
||||||
if user.is_authenticated:
|
|
||||||
auth = AuthServicesInfo.objects.get_or_create(user=user)[0]
|
|
||||||
return auth.state in states
|
|
||||||
return False
|
|
||||||
|
|
||||||
return user_passes_test(test_func, *args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
def members(*args, **kwargs):
|
def members(*args, **kwargs):
|
||||||
return _state_required([MEMBER_STATE], *args, **kwargs)
|
return _state_required(UserState.member_state, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def blues(*args, **kwargs):
|
def blues(*args, **kwargs):
|
||||||
return _state_required([BLUE_STATE], *args, **kwargs)
|
return _state_required(UserState.blue_state, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def members_and_blues(*args, **kwargs):
|
def members_and_blues(*args, **kwargs):
|
||||||
return _state_required([MEMBER_STATE, BLUE_STATE], *args, **kwargs)
|
return _state_required(UserState.member_or_blue_state, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def none_state(*args, **kwargs):
|
def none_state(*args, **kwargs):
|
||||||
return _state_required([NONE_STATE], *args, **kwargs)
|
return _state_required(UserState.none_state, *args, **kwargs)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from django.conf import settings
|
||||||
|
from authentication.states import NONE_STATE, BLUE_STATE, MEMBER_STATE
|
||||||
from authentication.models import AuthServicesInfo
|
from authentication.models import AuthServicesInfo
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@ -143,3 +144,44 @@ class AuthServicesInfoManager:
|
|||||||
logger.info("Updated user %s market info in authservicesinfo model." % user)
|
logger.info("Updated user %s market info in authservicesinfo model." % user)
|
||||||
else:
|
else:
|
||||||
logger.error("Failed to update user %s market info: user does not exist." % user)
|
logger.error("Failed to update user %s market info: user does not exist." % user)
|
||||||
|
|
||||||
|
|
||||||
|
class UserState:
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
MEMBER_STATE = MEMBER_STATE
|
||||||
|
BLUE_STATE = BLUE_STATE
|
||||||
|
NONE_STATE = NONE_STATE
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def member_state(cls, user):
|
||||||
|
return cls.state_required(user, [cls.MEMBER_STATE])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def member_or_blue_state(cls, user):
|
||||||
|
return cls.state_required(user, [cls.MEMBER_STATE, cls.BLUE_STATE])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def blue_state(cls, user):
|
||||||
|
return cls.state_required(user, [cls.BLUE_STATE])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def none_state(cls, user):
|
||||||
|
return cls.state_required(user, [cls.NONE_STATE])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_membership_state(cls, request):
|
||||||
|
if request.user.is_authenticated:
|
||||||
|
auth = AuthServicesInfo.objects.get_or_create(user=request.user)[0]
|
||||||
|
return {'STATE': auth.state}
|
||||||
|
return {'STATE': cls.NONE_STATE}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def state_required(user, states):
|
||||||
|
if user.is_superuser and settings.SUPERUSER_STATE_BYPASS:
|
||||||
|
return True
|
||||||
|
if user.is_authenticated:
|
||||||
|
auth = AuthServicesInfo.objects.get_or_create(user=user)[0]
|
||||||
|
return auth.state in states
|
||||||
|
return False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user