Skip to content

Commit

Permalink
frontend and ACL
Browse files Browse the repository at this point in the history
  • Loading branch information
ArtificialOwl committed Aug 17, 2021
1 parent dcf04e2 commit 5a9d365
Show file tree
Hide file tree
Showing 7 changed files with 257 additions and 125 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ node_modules/
build
vendor
js/
.idea/
18 changes: 13 additions & 5 deletions lib/Command/Group.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use OCA\Circles\CirclesManager;
use OCA\Circles\Model\Probes\CircleProbe;
use OCA\GroupFolders\Folder\FolderManager;
use OCP\Circles\ICirclesManager;
use OCP\Constants;
use OCP\Files\IRootFolder;
use OCP\IGroupManager;
Expand All @@ -46,11 +47,20 @@ class Group extends Base {
private $rootFolder;
private $groupManager;

public function __construct(FolderManager $folderManager, IRootFolder $rootFolder, IGroupManager $groupManager) {
/** @var ICirclesManager */
private $circlesManager;

public function __construct(
FolderManager $folderManager,
IRootFolder $rootFolder,
IGroupManager $groupManager,
ICirclesManager $circlesManager
) {
parent::__construct();
$this->folderManager = $folderManager;
$this->rootFolder = $rootFolder;
$this->groupManager = $groupManager;
$this->circlesManager = $circlesManager;
}

protected function configure() {
Expand All @@ -72,13 +82,11 @@ protected function execute(InputInterface $input, OutputInterface $output) {
$groupString = $input->getArgument('group');

// confirmation that $groupString is a valid CircleId
/** @var CirclesManager $circlesManager */
$circlesManager = \OC::$server->get(CirclesManager::class);
$circlesManager->startSuperSession();
$this->circlesManager->startSuperSession();

$probe = new CircleProbe();
$probe->includeSystemCircles();
$circlesManager->getCircle($groupString);
$this->circlesManager->getCircle($groupString);

// $group = $this->groupManager->get($groupString);
if ($input->getOption('delete')) {
Expand Down
12 changes: 9 additions & 3 deletions lib/Command/ListCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

use OC\Core\Command\Base;
use OCA\GroupFolders\Folder\FolderManager;
use OCP\Circles\ICirclesManager;
use OCP\Constants;
use OCP\Files\IRootFolder;
use Symfony\Component\Console\Helper\Table;
Expand All @@ -38,11 +39,13 @@ class ListCommand extends Base {
];

private $folderManager;
private $circlesManager;
private $rootFolder;

public function __construct(FolderManager $folderManager, IRootFolder $rootFolder) {
public function __construct(FolderManager $folderManager, ICirclesManager $circlesManager, IRootFolder $rootFolder) {
parent::__construct();
$this->folderManager = $folderManager;
$this->circlesManager = $circlesManager;
$this->rootFolder = $rootFolder;
}

Expand All @@ -54,6 +57,7 @@ protected function configure() {
}

protected function execute(InputInterface $input, OutputInterface $output) {
$this->circlesManager->startSuperSession();
$folders = $this->folderManager->getAllFoldersWithSize($this->rootFolder->getMountPoint()->getNumericStorageId());
usort($folders, function ($a, $b) {
return $a['id'] - $b['id'];
Expand All @@ -73,19 +77,21 @@ protected function execute(InputInterface $input, OutputInterface $output) {
$this->writeArrayInOutputFormat($input, $output, $folders);
} else {
$table = new Table($output);
$table->setHeaders(['Folder Id', 'Name', 'Groups', 'Quota', 'Size', 'Advanced Permissions', 'Manage advanced permissions']);
$table->setHeaders(['Folder Id', 'Name', 'Groups', 'Display Name', 'Quota', 'Size', 'Advanced Permissions', 'Manage advanced permissions']);
$table->setRows(array_map(function ($folder) {
$folder['size'] = \OCP\Util::humanFileSize($folder['size']);
$folder['quota'] = ($folder['quota'] > 0) ? \OCP\Util::humanFileSize($folder['quota']) : 'Unlimited';
$groupStrings = array_map(function (string $groupId, int $permissions) {
return $groupId . ': ' . $this->permissionsToString($permissions);
$circle = $this->circlesManager->getCircle($groupId);
return $circle->getDisplayName(). ' (' . $groupId . ') : ' . $this->permissionsToString($permissions);
}, array_keys($folder['groups']), array_values($folder['groups']));
$folder['groups'] = implode("\n", $groupStrings);
$folder['acl'] = $folder['acl'] ? 'Enabled' : 'Disabled';
$manageStrings = array_map(function ($manage) {
return $manage['id'] . ' (' . $manage['type'] . ')';
}, $folder['manage']);
$folder['manage'] = implode("\n", $manageStrings);

return $folder;
}, $folders));
$table->render();
Expand Down
26 changes: 17 additions & 9 deletions lib/Controller/FolderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,14 @@
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController;
use OCP\Files\IRootFolder;
use OCP\IGroupManager;
use OCP\IRequest;

class FolderController extends OCSController {
/** @var FolderManager */
private $manager;
/** @var IGroupManager */
private $groupManager;
/** @var MountProvider */
private $mountProvider;
/** @var IRootFolder */
Expand All @@ -42,12 +45,14 @@ public function __construct(
$AppName,
IRequest $request,
FolderManager $manager,
IGroupManager $groupManager,
MountProvider $mountProvider,
IRootFolder $rootFolder,
$userId
) {
parent::__construct($AppName, $request);
$this->manager = $manager;
$this->groupManager = $groupManager;
$this->mountProvider = $mountProvider;
$this->rootFolder = $rootFolder;
$this->userId = $userId;
Expand Down Expand Up @@ -209,22 +214,25 @@ private function folderDataForXML($data) {

/**
* @NoAdminRequired
* @param $id
*
* @param int $id
* @param $fileId
* @param string $source
* @param string $search
*
* @return DataResponse
*/
public function aclMappingSearch($id, $fileId, $search = ''): DataResponse {
$users = [];
$groups = [];

public function aclMappingSearch(int $id, $fileId, string $source = '', string $search = ''): DataResponse {
$entities = [];
if ($this->manager->canManageACL($id, $this->userId) === true) {
$groups = $this->manager->searchGroups($id, $search);
$users = $this->manager->searchUsers($id, $search);
$entities = $this->manager->searchEntities(
$id,
$search,
($this->groupManager->isAdmin($this->userId) && $source === 'settings')
);
}
return new DataResponse([
'users' => $users,
'groups' => $groups,
'entities' => $entities
]);
}
}
Loading

0 comments on commit 5a9d365

Please sign in to comment.