Add CAS_FEDERATE_PROVIDERS_LIST to settings parameters
This commit is contained in:
		@@ -144,8 +144,12 @@ Federation settings:
 | 
			
		||||
 | 
			
		||||
* ``CAS_FEDERATE``: A boolean for activating the federated mode (see the federate section below).
 | 
			
		||||
  The default is ``False``.
 | 
			
		||||
* ``CAS_FEDERATE_PROVIDERS``: A distionnary for the allowed identity providers (see the federate
 | 
			
		||||
* ``CAS_FEDERATE_PROVIDERS``: A dictionnary for the allowed identity providers (see the federate
 | 
			
		||||
  section below). The default is ``{}``.
 | 
			
		||||
* ``CAS_FEDERATE_PROVIDERS_LIST``: A list in with the keys of ``CAS_FEDERATE_PROVIDERS`` are ordened
 | 
			
		||||
  for beeing displayed on the login page. The default is the list of all the keys of
 | 
			
		||||
  ``CAS_FEDERATE_PROVIDERS`` sorted in natural order (0 < 2 < 10 < 20 < a = A < … < z = Z and
 | 
			
		||||
  lexicographical)
 | 
			
		||||
* ``CAS_FEDERATE_REMEMBER_TIMEOUT``: Time after witch the cookie use for "remember my identity
 | 
			
		||||
  provider" expire. The default is ``604800``, one week. The cookie is called
 | 
			
		||||
  ``_remember_provider``.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
# ⁻*- coding: utf-8 -*-
 | 
			
		||||
# This program is distributed in the hope that it will be useful, but WITHOUT
 | 
			
		||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | 
			
		||||
# FOR A PARTICULAR PURPOSE. See the GNU General Public License version 3 for
 | 
			
		||||
@@ -86,24 +87,26 @@ setting_default('CAS_FEDERATE_REMEMBER_TIMEOUT', 604800)  # one week
 | 
			
		||||
if settings.CAS_FEDERATE:
 | 
			
		||||
    settings.CAS_AUTH_CLASS = "cas_server.auth.CASFederateAuth"
 | 
			
		||||
 | 
			
		||||
__CAS_FEDERATE_PROVIDERS_LIST = list(settings.CAS_FEDERATE_PROVIDERS.keys())
 | 
			
		||||
#  create CAS_FEDERATE_PROVIDERS_LIST default value if not set: list of
 | 
			
		||||
#  the keys of CAS_FEDERATE_PROVIDERS in natural order: 2 < 10 < 20 < a = A < … < z = Z
 | 
			
		||||
try:
 | 
			
		||||
    getattr(settings, 'CAS_FEDERATE_PROVIDERS_LIST')
 | 
			
		||||
except AttributeError:
 | 
			
		||||
    __CAS_FEDERATE_PROVIDERS_LIST = list(settings.CAS_FEDERATE_PROVIDERS.keys())
 | 
			
		||||
 | 
			
		||||
    def __CAS_FEDERATE_PROVIDERS_LIST_sort(key):
 | 
			
		||||
        if len(settings.CAS_FEDERATE_PROVIDERS[key]) > 2:
 | 
			
		||||
            key = settings.CAS_FEDERATE_PROVIDERS[key][2].lower()
 | 
			
		||||
        else:
 | 
			
		||||
            key = key.lower()
 | 
			
		||||
        if isinstance(key, six.string_types) or isinstance(key, six.text_type):
 | 
			
		||||
            return tuple(
 | 
			
		||||
                int(num) if num else alpha
 | 
			
		||||
                for num, alpha in __CAS_FEDERATE_PROVIDERS_LIST_sort.tokenize(key)
 | 
			
		||||
            )
 | 
			
		||||
        else:
 | 
			
		||||
            return key
 | 
			
		||||
    __CAS_FEDERATE_PROVIDERS_LIST_sort.tokenize = re.compile(r'(\d+)|(\D+)').findall
 | 
			
		||||
    __CAS_FEDERATE_PROVIDERS_LIST.sort(key=__CAS_FEDERATE_PROVIDERS_LIST_sort)
 | 
			
		||||
 | 
			
		||||
def __CAS_FEDERATE_PROVIDERS_LIST_sort(key):
 | 
			
		||||
    if len(settings.CAS_FEDERATE_PROVIDERS[key]) > 2:
 | 
			
		||||
        key = settings.CAS_FEDERATE_PROVIDERS[key][2].lower()
 | 
			
		||||
    else:
 | 
			
		||||
        key = key.lower()
 | 
			
		||||
    if isinstance(key, six.string_types) or isinstance(key, six.text_type):
 | 
			
		||||
        return tuple(
 | 
			
		||||
            int(num) if num else alpha
 | 
			
		||||
            for num, alpha in __CAS_FEDERATE_PROVIDERS_LIST_sort.tokenize(key)
 | 
			
		||||
        )
 | 
			
		||||
    else:
 | 
			
		||||
        return key
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__CAS_FEDERATE_PROVIDERS_LIST_sort.tokenize = re.compile(r'(\d+)|(\D+)').findall
 | 
			
		||||
__CAS_FEDERATE_PROVIDERS_LIST.sort(key=__CAS_FEDERATE_PROVIDERS_LIST_sort)
 | 
			
		||||
 | 
			
		||||
settings.CAS_FEDERATE_PROVIDERS_LIST = __CAS_FEDERATE_PROVIDERS_LIST
 | 
			
		||||
    setting_default('CAS_FEDERATE_PROVIDERS_LIST', __CAS_FEDERATE_PROVIDERS_LIST)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user