Merge pull request #1080 from BuhtigithuB/improve/ldap-auth-more-dry

Make ldap_auth a bit more DRY
This commit is contained in:
mdipierro
2015-10-07 13:12:30 -05:00
+16 -22
View File
@@ -419,32 +419,26 @@ def ldap_auth(server='ldap', port=None,
store_user_mail = result[user_mail_attrib][0] store_user_mail = result[user_mail_attrib][0]
except KeyError, e: except KeyError, e:
store_user_mail = None store_user_mail = None
try: update_or_insert_values = {'first_name': store_user_firstname,
# 'last_name': store_user_lastname,
'email': store_user_mail}
if '@' not in username:
# user as username # user as username
# ################# # ################
fields = ['first_name', 'last_name', 'email']
user_in_db = db(db.auth_user.username == username) user_in_db = db(db.auth_user.username == username)
if user_in_db.count() > 0: elif '@' in username:
user_in_db.update(first_name=store_user_firstname,
last_name=store_user_lastname,
email=store_user_mail)
else:
db.auth_user.insert(first_name=store_user_firstname,
last_name=store_user_lastname,
email=store_user_mail,
username=username)
except:
#
# user as email # user as email
# ############## # #############
fields = ['first_name', 'last_name']
user_in_db = db(db.auth_user.email == username) user_in_db = db(db.auth_user.email == username)
if user_in_db.count() > 0: update_or_insert_values = {f: update_or_insert_values[f] for f in fields}
user_in_db.update(first_name=store_user_firstname, if user_in_db.count() > 0:
last_name=store_user_lastname) actual_values = user_in_db.select(*[db.auth_user[f] for f in fields]).first().as_dict()
else: if update_or_insert_values != actual_values: # We don't update record if values are the same
db.auth_user.insert(first_name=store_user_firstname, user_in_db.update(**update_or_insert_values)
last_name=store_user_lastname, else:
email=username) db.auth_user.insert(**update_or_insert_values)
con.unbind() con.unbind()
if manage_groups: if manage_groups: