diff --git a/authserv/ldap_model.py b/authserv/ldap_model.py index af6f7a2f19f2a8d29abf5b12753b9b0f6af79594..9757ecfc849b4f2b4712381908acb4d84aa25e15 100644 --- a/authserv/ldap_model.py +++ b/authserv/ldap_model.py @@ -7,6 +7,15 @@ from ldap.ldapobject import LDAPObject from authserv import model +# Define the LDAP schema attributes that we will use. +SCHEMA = { + 'password': 'userPassword', + 'otp_secret': 'totpSecret', + 'app_specific_password': 'appSpecificPassword', + 'shard': 'host' +} + + class Error(Exception): pass @@ -101,16 +110,19 @@ class User(model.User): self._dn = dn self._otp_enabled = False self._asps = [] + self._shard = None for key, values in data.iteritems(): - if key == 'userPassword': + if key == SCHEMA['password']: self._password = values[0] if self._password.startswith('{crypt}'): self._password = self._password[7:] - elif key == 'totpSecret': + elif key == SCHEMA['otp_secret']: self._otp_enabled = True self._totp_secret = values[0] - elif key == 'appSpecificPassword': + elif key == SCHEMA['app_specific_password']: self._asps = [v.split(':', 1) for v in values] + elif SCHEMA['shard'] and key == SCHEMA['shard']: + self._shard = values[0] def otp_enabled(self): return self._otp_enabled @@ -129,3 +141,6 @@ class User(model.User): def get_password(self): return self._password + + def get_shard(self): + return self._shard diff --git a/authserv/model.py b/authserv/model.py index b5962038856da4a96fe0b5766b50736f1040d04f..9af9c72cfab160ce0f8c061a9ba6f6a03d0c0501 100644 --- a/authserv/model.py +++ b/authserv/model.py @@ -31,4 +31,5 @@ class User(object): def get_password(self): pass - + def get_shard(self): + pass