f7cloud_client/apps/contacts/lib/Service/GroupSharingService.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

48 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Contacts\Service;
use OCP\IConfig;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\Share\IManager as IShareManager;
class GroupSharingService {
public function __construct(
private IConfig $config,
private IGroupManager $groupManager,
private IShareManager $shareManager,
) {
}
public function isGroupSharingAllowed(IUser $user): bool {
if (!$this->shareManager->allowGroupSharing()) {
return false;
}
$userGroups = $this->groupManager->getUserGroups($user);
$userGroupNames = array_map(static fn (IGroup $group) => $group->getGID(), $userGroups);
$excludeGroupList = json_decode($this->config->getAppValue('core', 'shareapi_exclude_groups_list', '[]'), true);
$excludeGroups = $this->config->getAppValue('core', 'shareapi_exclude_groups');
// "no" => Allow sharing for everyone
// "yes" => Exclude listed groups from sharing
// "allow" => Limit sharing to listed groups
return match ($excludeGroups) {
'yes' => count(array_intersect($userGroupNames, $excludeGroupList)) === 0,
'allow' => count(array_intersect($userGroupNames, $excludeGroupList)) > 0,
default => true,
};
}
}