Dont always use the current users quota when calculating storage info

instead pass the quota as parameter.

Without this fix, when 'quota_include_external_storage' is enabled, the
webui will show the quota configured for the admin for every user
instead of the users quota

Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
Robin Appelman 2020-03-04 17:20:27 +01:00
parent 64a29d01a4
commit 93411a2ea0
No known key found for this signature in database
GPG Key ID: 42B69D8A64526EFB
2 changed files with 11 additions and 17 deletions

View File

@ -42,6 +42,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/> * along with this program. If not, see <http://www.gnu.org/licenses/>
* *
*/ */
use OCP\IUser;
use Symfony\Component\Process\ExecutableFinder; use Symfony\Component\Process\ExecutableFinder;
/** /**
@ -503,19 +505,14 @@ class OC_Helper {
|| $storage->instanceOfStorage('\OC\Files\ObjectStore\HomeObjectStoreStorage') || $storage->instanceOfStorage('\OC\Files\ObjectStore\HomeObjectStoreStorage')
) { ) {
/** @var \OC\Files\Storage\Home $storage */ /** @var \OC\Files\Storage\Home $storage */
$userInstance = $storage->getUser(); $user = $storage->getUser();
$user = ($userInstance === null) ? null : $userInstance->getUID();
} else { } else {
$user = \OC::$server->getUserSession()->getUser()->getUID(); $user = \OC::$server->getUserSession()->getUser();
}
if ($user) {
$quota = OC_Util::getUserQuota($user);
} else {
$quota = \OCP\Files\FileInfo::SPACE_UNLIMITED;
} }
$quota = OC_Util::getUserQuota($user);
if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) { if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) {
// always get free space / total space from root + mount points // always get free space / total space from root + mount points
return self::getGlobalStorageInfo(); return self::getGlobalStorageInfo($quota);
} }
} }
@ -561,11 +558,10 @@ class OC_Helper {
/** /**
* Get storage info including all mount points and quota * Get storage info including all mount points and quota
* *
* @param int $quota
* @return array * @return array
*/ */
private static function getGlobalStorageInfo() { private static function getGlobalStorageInfo($quota) {
$quota = OC_Util::getUserQuota(\OCP\User::getUser());
$rootInfo = \OC\Files\Filesystem::getFileInfo('', 'ext'); $rootInfo = \OC\Files\Filesystem::getFileInfo('', 'ext');
$used = $rootInfo['size']; $used = $rootInfo['size'];
if ($used < 0) { if ($used < 0) {

View File

@ -251,8 +251,7 @@ class OC_Util {
) { ) {
/** @var \OC\Files\Storage\Home $storage */ /** @var \OC\Files\Storage\Home $storage */
if (is_object($storage->getUser())) { if (is_object($storage->getUser())) {
$user = $storage->getUser()->getUID(); $quota = OC_Util::getUserQuota($storage->getUser());
$quota = OC_Util::getUserQuota($user);
if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) { if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) {
return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota, 'root' => 'files')); return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota, 'root' => 'files'));
} }
@ -375,11 +374,10 @@ class OC_Util {
/** /**
* Get the quota of a user * Get the quota of a user
* *
* @param string $userId * @param IUser|null $user
* @return float Quota bytes * @return float Quota bytes
*/ */
public static function getUserQuota($userId) { public static function getUserQuota(?IUser $user) {
$user = \OC::$server->getUserManager()->get($userId);
if (is_null($user)) { if (is_null($user)) {
return \OCP\Files\FileInfo::SPACE_UNLIMITED; return \OCP\Files\FileInfo::SPACE_UNLIMITED;
} }