Browse Source

Make it possible to make external storages read only

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v14.0.0beta1
Roeland Jago Douma 6 years ago
parent
commit
db96b0bb0b
No account linked to committer's email address

+ 10
- 2
apps/files_external/js/settings.js View File

@@ -48,6 +48,12 @@ var MOUNT_OPTIONS_DROPDOWN_TEMPLATE =
' <label for="mountOptionsEncoding">{{mountOptionsEncodingLabel}}</label>'+
' </span>'+
' </li>'+
' <li class="optionRow">' +
' <span class="menuitem">' +
' <input id="mountOptionsReadOnly" class="checkbox" name="readonly" type="checkbox" value="true"/>' +
' <label for="mountOptionsReadOnly">{{t "files_external" "Read only"}}</label>' +
' </span>' +
' </li>' +
' </ul>'+
'</div>';

@@ -916,7 +922,8 @@ MountConfigListView.prototype = _.extend({
'previews': true,
'enable_sharing': false,
'filesystem_check_changes': 1,
'encoding_compatibility': false
'encoding_compatibility': false,
'readonly': false,
}));
}

@@ -1303,7 +1310,8 @@ MountConfigListView.prototype = _.extend({
'previews',
'filesystem_check_changes',
'enable_sharing',
'encoding_compatibility'
'encoding_compatibility',
'readonly'
];
if (this._encryptionEnabled) {
visibleOptions.push('encrypt');

+ 2
- 1
apps/files_external/lib/Command/ListCommand.php View File

@@ -192,7 +192,8 @@ class ListCommand extends Base {
'previews' => true,
'filesystem_check_changes' => 1,
'enable_sharing' => false,
'encoding_compatibility' => false
'encoding_compatibility' => false,
'readonly' => false,
];
$rows = array_map(function (StorageConfig $config) use ($userId, $defaultMountOptions, $full) {
$storageConfig = $config->getBackendOptions();

+ 1
- 0
apps/files_external/templates/settings.php View File

@@ -12,6 +12,7 @@
$l->t("Check for changes");
$l->t("Never");
$l->t("Once every direct access");
$l->t('Read only');

script('files_external', 'settings');
style('files_external', 'settings');

+ 17
- 0
lib/private/legacy/util.php View File

@@ -259,6 +259,23 @@ class OC_Util {
return $storage;
});

\OC\Files\Filesystem::addStorageWrapper('readonly', function ($mountPoint, \OCP\Files\Storage\IStorage $storage, \OCP\Files\Mount\IMountPoint $mount) {
/*
* Do not allow any operations that modify the storage
*/
if ($mount->getOption('readonly', false)) {
return new \OC\Files\Storage\Wrapper\PermissionsMask([
'storage' => $storage,
'mask' => \OCP\Constants::PERMISSION_ALL & ~(
\OCP\Constants::PERMISSION_UPDATE |
\OCP\Constants::PERMISSION_CREATE |
\OCP\Constants::PERMISSION_DELETE
),
]);
}
return $storage;
});

OC_Hook::emit('OC_Filesystem', 'preSetup', array('user' => $user));
\OC\Files\Filesystem::logWarningWhenAddingStorageWrapper(true);


Loading…
Cancel
Save