diff options
author | Robin Appelman <robin@icewind.nl> | 2020-12-11 16:40:29 +0100 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2021-01-08 15:06:42 +0100 |
commit | 518e91b0087058f2c9813da6a2427a56fc14e32c (patch) | |
tree | bd29f6831488b6393406efaa60886e2215f036bb | |
parent | 81302f78e5cea60dc9064be8ed979d523ff84e18 (diff) | |
download | nextcloud-server-518e91b0087058f2c9813da6a2427a56fc14e32c.tar.gz nextcloud-server-518e91b0087058f2c9813da6a2427a56fc14e32c.zip |
dont offer to edit external config settings if we can't edit them
Signed-off-by: Robin Appelman <robin@icewind.nl>
5 files changed, 58 insertions, 24 deletions
diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js index e8273dca0df..c3945991810 100644 --- a/apps/files_external/js/statusmanager.js +++ b/apps/files_external/js/statusmanager.js @@ -94,7 +94,8 @@ OCA.Files_External.StatusManager = { id: mountData.id, error: statusMessage, userProvided: response.userProvided, - authMechanism: response.authMechanism + authMechanism: response.authMechanism, + canEdit: response.can_edit, }; } afterCallback(mountData, self.mountStatus[mountData.mount_point]); @@ -182,12 +183,14 @@ OCA.Files_External.StatusManager = { if (mountData.userProvided || mountData.authMechanism === 'password::global::user') { // personal mount whit credentials problems this.showCredentialsDialog(name, mountData); - } else { + } else if (mountData.canEdit) { OC.dialogs.confirm(t('files_external', 'There was an error with message: ') + mountData.error + '. Do you want to review mount point config in admin settings page?', t('files_external', 'External mount error'), function (e) { if (e === true) { OC.redirect(OC.generateUrl('/settings/admin/externalstorages')); } }); + } else { + OC.dialogs.info(t('files_external', 'There was an error with message: ') + mountData.error + '. Please contact your system administrator.', t('files_external', 'External mount error'), () => {}); } } else { OC.dialogs.confirm(t('files_external', 'There was an error with message: ') + mountData.error + '. Do you want to review mount point config in personal settings page?', t('files_external', 'External mount error'), function (e) { diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php index 4d8b6c4bc8f..7ce2c84b8a9 100644 --- a/apps/files_external/lib/Controller/GlobalStoragesController.php +++ b/apps/files_external/lib/Controller/GlobalStoragesController.php @@ -32,9 +32,11 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; +use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; +use OCP\IUserSession; /** * Global storages controller @@ -48,20 +50,26 @@ class GlobalStoragesController extends StoragesController { * @param IL10N $l10n l10n service * @param GlobalStoragesService $globalStoragesService storage service * @param ILogger $logger + * @param IUserSession $userSession + * @param IGroupManager $groupManager */ public function __construct( $AppName, IRequest $request, IL10N $l10n, GlobalStoragesService $globalStoragesService, - ILogger $logger + ILogger $logger, + IUserSession $userSession, + IGroupManager $groupManager ) { parent::__construct( $AppName, $request, $l10n, $globalStoragesService, - $logger + $logger, + $userSession, + $groupManager ); } diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index 5d9ffedf885..d58d61e3939 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -40,9 +40,11 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\Files\StorageNotAvailableException; +use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; +use OCP\IUserSession; /** * Base class for storages controllers @@ -69,6 +71,16 @@ abstract class StoragesController extends Controller { protected $logger; /** + * @var IUserSession + */ + protected $userSession; + + /** + * @var IGroupManager + */ + protected $groupManager; + + /** * Creates a new storages controller. * * @param string $AppName application name @@ -82,12 +94,16 @@ abstract class StoragesController extends Controller { IRequest $request, IL10N $l10n, StoragesService $storagesService, - ILogger $logger + ILogger $logger, + IUserSession $userSession, + IGroupManager $groupManager ) { parent::__construct($AppName, $request); $this->l10n = $l10n; $this->service = $storagesService; $this->logger = $logger; + $this->userSession = $userSession; + $this->groupManager = $groupManager; } /** @@ -337,8 +353,12 @@ abstract class StoragesController extends Controller { ); } + $data = $this->formatStorageForUI($storage)->jsonSerialize(); + $isAdmin = $this->groupManager->isAdmin($this->userSession->getUser()->getUID()); + $data['can_edit'] = $storage->getType() === StorageConfig::MOUNT_TYPE_PERSONAl || $isAdmin; + return new DataResponse( - $this->formatStorageForUI($storage), + $data, Http::STATUS_OK ); } diff --git a/apps/files_external/lib/Controller/UserGlobalStoragesController.php b/apps/files_external/lib/Controller/UserGlobalStoragesController.php index 1f7eb595701..f26b4dd67f9 100644 --- a/apps/files_external/lib/Controller/UserGlobalStoragesController.php +++ b/apps/files_external/lib/Controller/UserGlobalStoragesController.php @@ -37,6 +37,7 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\UserGlobalStoragesService; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; +use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; @@ -47,35 +48,34 @@ use OCP\IUserSession; */ class UserGlobalStoragesController extends StoragesController { /** - * @var IUserSession - */ - private $userSession; - - /** * Creates a new user global storages controller. * * @param string $AppName application name * @param IRequest $request request object * @param IL10N $l10n l10n service * @param UserGlobalStoragesService $userGlobalStoragesService storage service + * @param ILogger $logger * @param IUserSession $userSession + * @param IGroupManager $groupManager */ public function __construct( $AppName, IRequest $request, IL10N $l10n, UserGlobalStoragesService $userGlobalStoragesService, + ILogger $logger, IUserSession $userSession, - ILogger $logger + IGroupManager $groupManager ) { parent::__construct( $AppName, $request, $l10n, $userGlobalStoragesService, - $logger + $logger, + $userSession, + $groupManager ); - $this->userSession = $userSession; } /** @@ -133,8 +133,12 @@ class UserGlobalStoragesController extends StoragesController { $this->sanitizeStorage($storage); + $data = $this->formatStorageForUI($storage)->jsonSerialize(); + $isAdmin = $this->groupManager->isAdmin($this->userSession->getUser()->getUID()); + $data['can_edit'] = $storage->getType() === StorageConfig::MOUNT_TYPE_PERSONAl || $isAdmin; + return new DataResponse( - $this->formatStorageForUI($storage), + $data, Http::STATUS_OK ); } diff --git a/apps/files_external/lib/Controller/UserStoragesController.php b/apps/files_external/lib/Controller/UserStoragesController.php index c297d3db38e..8686921c90c 100644 --- a/apps/files_external/lib/Controller/UserStoragesController.php +++ b/apps/files_external/lib/Controller/UserStoragesController.php @@ -35,6 +35,7 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; +use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; @@ -45,36 +46,34 @@ use OCP\IUserSession; */ class UserStoragesController extends StoragesController { /** - * @var IUserSession - */ - private $userSession; - - /** * Creates a new user storages controller. * * @param string $AppName application name * @param IRequest $request request object * @param IL10N $l10n l10n service * @param UserStoragesService $userStoragesService storage service - * @param IUserSession $userSession * @param ILogger $logger + * @param IUserSession $userSession + * @param IGroupManager $groupManager */ public function __construct( $AppName, IRequest $request, IL10N $l10n, UserStoragesService $userStoragesService, + ILogger $logger, IUserSession $userSession, - ILogger $logger + IGroupManager $groupManager ) { parent::__construct( $AppName, $request, $l10n, $userStoragesService, - $logger + $logger, + $userSession, + $groupManager ); - $this->userSession = $userSession; } protected function manipulateStorageConfig(StorageConfig $storage) { |