Fix compatibility for PAM auth

PR #280 invoked `pam.authenticate().authenticate()` for older versions
of python-pam. Also, this version avoids monkeypatching the PAM module.
This commit is contained in:
Markus Unterwaditzer 2015-04-25 11:14:04 +02:00
parent ab77f62bf4
commit baa958c81f

View File

@ -33,9 +33,13 @@ from .. import config, log
GROUP_MEMBERSHIP = config.get("auth", "pam_group_membership") GROUP_MEMBERSHIP = config.get("auth", "pam_group_membership")
# Compatibility patch for old versions of python-pam. # Compatibility for old versions of python-pam.
if not hasattr(pam, "pam"): if hasattr(pam, "pam"):
pam.pam = (lambda *vargs, **kwargs: pam.authenticate(*vargs, **kwards)) def pam_authenticate(*args, **kwargs):
return pam.pam().authenticate(*args, **kwargs)
else:
def pam_authenticate(*args, **kwargs):
return pam.authenticate(*args, **kwargs)
def is_authenticated(user, password): def is_authenticated(user, password):
@ -77,7 +81,7 @@ def is_authenticated(user, password):
"The PAM user belongs to the required group (%s)" % "The PAM user belongs to the required group (%s)" %
GROUP_MEMBERSHIP) GROUP_MEMBERSHIP)
# Check the password # Check the password
if pam.pam().authenticate(user, password): if pam_authenticate(user, password):
return True return True
else: else:
log.LOGGER.debug("Wrong PAM password") log.LOGGER.debug("Wrong PAM password")