Merge pull request #19580 from owncloud/issue-19399-remote-shares-case-sensitivity
Make sure that remote shares use the correct uid casing
This commit is contained in:
commit
757f320531
3 changed files with 41 additions and 0 deletions
|
@ -53,6 +53,7 @@ class Server2Server {
|
||||||
return new \OC_OCS_Result(null, 400, 'The mountpoint name contains invalid characters.');
|
return new \OC_OCS_Result(null, 400, 'The mountpoint name contains invalid characters.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME this should be a method in the user management instead
|
||||||
\OCP\Util::writeLog('files_sharing', 'shareWith before, ' . $shareWith, \OCP\Util::DEBUG);
|
\OCP\Util::writeLog('files_sharing', 'shareWith before, ' . $shareWith, \OCP\Util::DEBUG);
|
||||||
\OCP\Util::emitHook(
|
\OCP\Util::emitHook(
|
||||||
'\OCA\Files_Sharing\API\Server2Server',
|
'\OCA\Files_Sharing\API\Server2Server',
|
||||||
|
|
|
@ -608,6 +608,14 @@ class OC {
|
||||||
OC_User::useBackend(new OC_User_Database());
|
OC_User::useBackend(new OC_User_Database());
|
||||||
OC_Group::useBackend(new OC_Group_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
|
//setup extra user backends
|
||||||
if (!self::checkUpgrade(false)) {
|
if (!self::checkUpgrade(false)) {
|
||||||
OC_User::setupBackends();
|
OC_User::setupBackends();
|
||||||
|
|
|
@ -294,6 +294,20 @@ class OC_User_Database extends OC_User_Backend implements \OCP\IUserBackend {
|
||||||
return $result->fetchOne();
|
return $result->fetchOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
* Backend name to be shown in user management
|
||||||
* @return string the name of the backend to be shown
|
* @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';
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue