Skip to content

Commit

Permalink
dont offer to edit external config settings if we can't edit them
Browse files Browse the repository at this point in the history
Signed-off-by: Robin Appelman <robin@icewind.nl>
  • Loading branch information
icewind1991 committed Dec 11, 2020
1 parent 27fdc65 commit 9df23d2
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 24 deletions.
7 changes: 5 additions & 2 deletions apps/files_external/js/statusmanager.js
Original file line number Diff line number Diff line change
Expand Up @@ -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]);
Expand Down Expand Up @@ -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) {
Expand Down
12 changes: 10 additions & 2 deletions apps/files_external/lib/Controller/GlobalStoragesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@
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
Expand All @@ -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
);
}

Expand Down
24 changes: 22 additions & 2 deletions apps/files_external/lib/Controller/StoragesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@
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
Expand All @@ -68,6 +70,16 @@ abstract class StoragesController extends Controller {
*/
protected $logger;

/**
* @var IUserSession
*/
protected $userSession;

/**
* @var IGroupManager
*/
protected $groupManager;

/**
* Creates a new storages controller.
*
Expand All @@ -82,12 +94,16 @@ public function __construct(
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;
}

/**
Expand Down Expand Up @@ -337,8 +353,12 @@ public function show($id, $testOnly = true) {
);
}

$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
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
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;
Expand All @@ -46,36 +47,35 @@
* User global storages controller
*/
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;
}

/**
Expand Down Expand Up @@ -133,8 +133,12 @@ public function show($id, $testOnly = true) {

$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
);
}
Expand Down
17 changes: 8 additions & 9 deletions apps/files_external/lib/Controller/UserStoragesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
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;
Expand All @@ -44,37 +45,35 @@
* User storages controller
*/
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) {
Expand Down

0 comments on commit 9df23d2

Please sign in to comment.