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
|
@ -53,6 +53,7 @@ class Server2Server {
|
|||
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::emitHook(
|
||||
'\OCA\Files_Sharing\API\Server2Server',
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -294,6 +294,20 @@ class OC_User_Database extends OC_User_Backend implements \OCP\IUserBackend {
|
|||
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
|
||||
* @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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue