Fix multiple users having the same external share mountpoint

This commit is contained in:
Robin Appelman 2014-06-16 15:57:01 +02:00
parent 5b1b6572f7
commit 0616eb4007
3 changed files with 11 additions and 5 deletions

View File

@ -81,6 +81,10 @@
<index>
<name>sh_external_mp</name>
<unique>true</unique>
<field>
<name>user</name>
<sorting>ascending</sorting>
</field>
<field>
<name>mountpoint_hash</name>
<sorting>ascending</sorting>

View File

@ -1 +1 @@
0.5.1
0.5.2

View File

@ -117,22 +117,24 @@ class Manager {
* @return bool
*/
public function setMountPoint($source, $target) {
$user = $this->userSession->getUser();
$source = $this->stripPath($source);
$target = $this->stripPath($target);
$sourceHash = md5($source);
$targetHash = md5($target);
$query = $this->connection->prepare('UPDATE *PREFIX*share_external SET
`mountpoint` = ?, `mountpoint_hash` = ? WHERE `mountpoint_hash` = ?');
$result = (bool)$query->execute(array($target, $targetHash, $sourceHash));
`mountpoint` = ?, `mountpoint_hash` = ? WHERE `mountpoint_hash` = ? AND `user` = ?');
$result = (bool)$query->execute(array($target, $targetHash, $sourceHash, $user->getUID()));
return $result;
}
public function removeShare($mountPoint) {
$user = $this->userSession->getUser();
$mountPoint = $this->stripPath($mountPoint);
$hash = md5($mountPoint);
$query = $this->connection->prepare('DELETE FROM *PREFIX*share_external WHERE `mountpoint_hash` = ?');
return (bool)$query->execute(array($hash));
$query = $this->connection->prepare('DELETE FROM *PREFIX*share_external WHERE `mountpoint_hash` = ? AND `user` = ?');
return (bool)$query->execute(array($hash, $user->getUID()));
}
}