diff --git a/CHANGES.rst b/CHANGES.rst index 2dcac21..c76e86a 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,7 +4,10 @@ Change Log 2.6.5 (unreleased) ------------------ -- Nothing changed yet. +- Pass the login name as ``updateCredentials``'s ``login`` parameter + (not the user id) (`#105 + `_). + Fix docstring of ``PluggableAuthService._extractUserIds``. 2.6.4 (2021-07-28) diff --git a/src/Products/PluggableAuthService/PluggableAuthService.py b/src/Products/PluggableAuthService/PluggableAuthService.py index 62f8bcc..f4fbced 100644 --- a/src/Products/PluggableAuthService/PluggableAuthService.py +++ b/src/Products/PluggableAuthService/PluggableAuthService.py @@ -531,11 +531,11 @@ def _isNotCompetent(self, request, plugins): @security.private def _extractUserIds(self, request, plugins): - """ request -> [validated_user_id] + """ request -> [(validated_user_id, login)] o For each set of extracted credentials, try to authenticate - a user; accumulate a list of the IDs of such users over all - our authentication and extraction plugins. + a user; accumulate a list of pairs (ID, login) of such users + over all our authentication and extraction plugins. """ try: extractors = plugins.listPlugins(IExtractionPlugin) diff --git a/src/Products/PluggableAuthService/events.py b/src/Products/PluggableAuthService/events.py index 81c0fe0..354620c 100644 --- a/src/Products/PluggableAuthService/events.py +++ b/src/Products/PluggableAuthService/events.py @@ -97,7 +97,7 @@ def userCredentialsUpdatedHandler(principal, event): pas.updateCredentials( pas.REQUEST, pas.REQUEST.RESPONSE, - principal.getId(), + principal.getUserName(), # aka "login" event.password) diff --git a/src/Products/PluggableAuthService/tests/pastc.py b/src/Products/PluggableAuthService/tests/pastc.py index a2f17ff..d9acea1 100644 --- a/src/Products/PluggableAuthService/tests/pastc.py +++ b/src/Products/PluggableAuthService/tests/pastc.py @@ -57,6 +57,8 @@ def _setupUserFolder(self): plugins.activatePlugin(IRolesPlugin, 'roles') plugins.activatePlugin(IRoleAssignerPlugin, 'roles') plugins.activatePlugin(IRoleEnumerationPlugin, 'roles') + # add a user for which id and login are different + plugins.users.addUser("user_id", "user_login", "user_password") def _setupUser(self): """Creates the default user.""" diff --git a/src/Products/PluggableAuthService/tests/test_UserFolder.py b/src/Products/PluggableAuthService/tests/test_UserFolder.py index 64a595d..f27fe70 100644 --- a/src/Products/PluggableAuthService/tests/test_UserFolder.py +++ b/src/Products/PluggableAuthService/tests/test_UserFolder.py @@ -335,7 +335,7 @@ def wrap(self, *args): self.uf._original = self.uf.updateCredentials self.uf.updateCredentials = functools.partial(wrap, self.uf) self.assertEqual(len(self.uf._data), 0) - event.notify(CredentialsUpdated(self.uf.getUserById('user1'), + event.notify(CredentialsUpdated(self.uf.getUserById('user_id'), 'testpassword')) - self.assertEqual(self.uf._data[0][2], 'user1') + self.assertEqual(self.uf._data[0][2], 'user_login') self.assertEqual(self.uf._data[0][3], 'testpassword')