From 44680b5c3b5b441192a36cc5fada5e23fe7de571 Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=B4me=20Chilliet?= Date: Mon, 7 Feb 2022 10:32:18 +0100 Subject: [PATCH] Make it explicit that a DN can be used for ldap:check-user MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- apps/user_ldap/lib/Access.php | 4 ++-- apps/user_ldap/lib/Command/CheckUser.php | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index ed5e5bff9ce..bda495bc9a8 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -488,7 +488,7 @@ class Access extends LDAPUtility { /** * returns the internal Nextcloud name for the given LDAP DN of the user, false on DN outside of search DN or failure * - * @param string $dn the dn of the user object + * @param string $fdn the dn of the user object * @param string $ldapName optional, the display name of the object * @return string|false with with the name to use in Nextcloud * @throws \Exception @@ -1770,7 +1770,7 @@ class Access extends LDAPUtility { /** * @param string $dn * @param bool $isUser - * @param null $ldapRecord + * @param array|null $ldapRecord * @return false|string * @throws ServerNotAvailableException */ diff --git a/apps/user_ldap/lib/Command/CheckUser.php b/apps/user_ldap/lib/Command/CheckUser.php index 7476afb1bfe..6ccfc9c19ea 100644 --- a/apps/user_ldap/lib/Command/CheckUser.php +++ b/apps/user_ldap/lib/Command/CheckUser.php @@ -64,7 +64,7 @@ class CheckUser extends Command { ->addArgument( 'ocName', InputArgument::REQUIRED, - 'the user name as used in Nextcloud' + 'the user name as used in Nextcloud, or the LDAP DN' ) ->addOption( 'force', @@ -83,8 +83,14 @@ class CheckUser extends Command { protected function execute(InputInterface $input, OutputInterface $output): int { try { - $uid = $input->getArgument('ocName'); $this->assertAllowed($input->getOption('force')); + $uid = $input->getArgument('ocName'); + if ($this->backend->getLDAPAccess($uid)->stringResemblesDN($uid)) { + $username = $this->backend->dn2UserName($uid); + if ($username !== false) { + $uid = $username; + } + } $wasMapped = $this->userWasMapped($uid); $exists = $this->backend->userExistsOnLDAP($uid, true); if ($exists === true) { -- 2.39.5