Ignore:
Timestamp:
22 Aug 2013, 06:52:16 (11 years ago)
Author:
Henrik Bettermann
Message:

Handling school markers in Moodle is a nightmare. We should think about giving up the option of handling several schools with only one Moodle instance.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.cas/trunk/waeup/cas/authenticators.py

    r10522 r10523  
    159159        """
    160160        for backend_name, backend in self.backends.items():
    161             if not re.match(backend['marker'], username):
    162                 continue
    163             # remove school marker
    164             username = RE_SCHOOL_MARKER.sub('', username)
     161            if backend['marker']:
     162                if not re.match(backend['marker'], username):
     163                    continue
     164                # remove school marker
     165                username = RE_SCHOOL_MARKER.sub('', username)
    165166            proxy = xmlrpclib.ServerProxy(
    166167                backend['url'], allow_none=True)
     
    204205        except xmlrpclib.Fault:
    205206            faultstring = sys.exc_info()[1].faultString
     207            if 'Email address already exists' in faultstring:
     208                return (False,
     209                    'Another Moodle user is using the same email address.'
     210                    ' Email addresses can\'t be used twice in Moodle.')
    206211            if not 'Username already exists' in faultstring:
    207212                return (False, faultstring)
     
    229234        """
    230235        for backend_name, backend in self.backends.items():
    231             if not re.match(backend['marker'], username):
    232                 continue
    233             # remove school marker
    234             username = RE_SCHOOL_MARKER.sub('', username)
     236            if backend['marker']:
     237                if not re.match(backend['marker'], username):
     238                    continue
     239                # remove school marker
     240                kofa_username = RE_SCHOOL_MARKER.sub('', username)
     241            else:
     242                kofa_username = username
    235243            proxy = xmlrpclib.ServerProxy(
    236244                backend['url'], allow_none=True)
    237245            moodle = xmlrpclib.ServerProxy(
    238246                backend['moodle_url'], allow_none=True)
    239             principal = proxy.check_applicant_credentials(username, password)
     247            principal = proxy.check_applicant_credentials(kofa_username, password)
    240248            if principal is None:
    241                 principal = proxy.check_student_credentials(username, password)
     249                principal = proxy.check_student_credentials(kofa_username, password)
    242250            if principal is None:
    243251                return (False, 'Invalid username or password')
    244252            if principal['type'] == 'student':
    245                 userdata = proxy.get_student_moodle_data(username)
     253                userdata = proxy.get_student_moodle_data(kofa_username)
    246254                return self._create_user(username, userdata, moodle)
    247255            if principal['type'] == 'applicant':
    248                 userdata = proxy.get_applicant_moodle_data(username)
     256                userdata = proxy.get_applicant_moodle_data(kofa_username)
    249257                return self._create_user(username, userdata, moodle)
    250258            return (False, 'User not eligible')
Note: See TracChangeset for help on using the changeset viewer.