diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2015-10-05 11:50:36 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2015-10-06 15:16:19 +0200 |
commit | 13dd62f7b040fdd4d638a50ad687d908a09d9bc8 (patch) | |
tree | 9980f30421dee26e9236b467d2501be6b15cb4a8 /lib | |
parent | 191f1b2d49afe980f43bdf6c0cc2c8cbb7f88c91 (diff) | |
download | nextcloud-server-13dd62f7b040fdd4d638a50ad687d908a09d9bc8.tar.gz nextcloud-server-13dd62f7b040fdd4d638a50ad687d908a09d9bc8.zip |
Make sure that remote shares use the correct uid casing
Diffstat (limited to 'lib')
-rw-r--r-- | lib/base.php | 8 | ||||
-rw-r--r-- | lib/private/user/database.php | 32 |
2 files changed, 40 insertions, 0 deletions
diff --git a/lib/base.php b/lib/base.php index 12c23f5ce1b..5deba7866f3 100644 --- a/lib/base.php +++ b/lib/base.php @@ -608,6 +608,14 @@ class OC { OC_User::useBackend(new OC_User_Database()); OC_Group::useBackend(new OC_Group_Database()); + // Subscribe to the hook + \OCP\Util::connectHook( + '\OCA\Files_Sharing\API\Server2Server', + 'preLoginNameUsedAsUserName', + '\OC_User_Database', + 'preLoginNameUsedAsUserName' + ); + //setup extra user backends if (!self::checkUpgrade(false)) { OC_User::setupBackends(); diff --git a/lib/private/user/database.php b/lib/private/user/database.php index 081066398c0..3969b446071 100644 --- a/lib/private/user/database.php +++ b/lib/private/user/database.php @@ -295,6 +295,20 @@ class OC_User_Database extends OC_User_Backend implements \OCP\IUserBackend { } /** + * returns the username for the given login name in the correct casing + * + * @param string $loginName + * @return string|false + */ + public function loginName2UserName($loginName) { + if ($this->userExists($loginName)) { + return $this->cache[$loginName]['uid']; + } + + return false; + } + + /** * Backend name to be shown in user management * @return string the name of the backend to be shown */ @@ -302,4 +316,22 @@ class OC_User_Database extends OC_User_Backend implements \OCP\IUserBackend { return 'Database'; } + public static function preLoginNameUsedAsUserName($param) { + if(!isset($param['uid'])) { + throw new \Exception('key uid is expected to be set in $param'); + } + + $backends = \OC::$server->getUserManager()->getBackends(); + foreach ($backends as $backend) { + if ($backend instanceof \OC_User_Database) { + /** @var \OC_User_Database $backend */ + $uid = $backend->loginName2UserName($param['uid']); + if ($uid !== false) { + $param['uid'] = $uid; + return; + } + } + } + + } } |