Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions lib/FederatedItems/CircleConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Federated\FederatedEvent;
use OCA\Circles\Model\Helpers\MemberHelper;
use OCA\Circles\Service\ConfigService;

/**
* Class CircleConfig
Expand All @@ -55,14 +56,19 @@ class CircleConfig implements
/** @var CircleRequest */
private $circleRequest;

/** @var ConfigService */
private $configService;


/**
* CircleConfig constructor.
*
* @param CircleRequest $circleRequest
* @param ConfigService $configService
*/
public function __construct(CircleRequest $circleRequest) {
public function __construct(CircleRequest $circleRequest, ConfigService $configService) {
$this->circleRequest = $circleRequest;
$this->configService = $configService;
}


Expand Down Expand Up @@ -133,10 +139,11 @@ public function verify(FederatedEvent $event): void {
throw new FederatedItemBadRequestException('Configuration value is not valid');
}

$event->getData()->sInt('config', $config);

$new = clone $circle;
$new->setConfig($config);
$this->configService->confirmAllowedCircleTypes($new);

$event->getData()->sInt('config', $new->getConfig());

$event->setOutcome($this->serialize($new));
}
Expand Down
1 change: 1 addition & 0 deletions lib/Service/CircleService.php
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ public function create(
}

$this->confirmName($circle);
$this->configService->confirmAllowedCircleTypes($circle);

$member = new Member();
$member->importFromIFederatedUser($owner);
Expand Down
20 changes: 19 additions & 1 deletion lib/Service/ConfigService.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ class ConfigService {
public const MEMBERS_LIMIT = 'members_limit';
public const ACTIVITY_ON_NEW_CIRCLE = 'creation_activity';
public const ALLOWED_TYPES = 'allowed_types';

public const CIRCLE_TYPES_FORCE = 'circle_types_force';
public const CIRCLE_TYPES_BLOCK = 'circle_types_block';
public const MIGRATION_BYPASS = 'migration_bypass';
public const MIGRATION_22 = 'migration_22';
public const MIGRATION_22_1 = 'migration_22_1';
Expand Down Expand Up @@ -180,6 +181,8 @@ class ConfigService {
self::MEMBERS_LIMIT => '-1',
self::ACTIVITY_ON_NEW_CIRCLE => '1',
self::ALLOWED_TYPES => Member::ALLOWING_ALL_TYPES,
self::CIRCLE_TYPES_FORCE => '0',
self::CIRCLE_TYPES_BLOCK => '0',

self::MIGRATION_BYPASS => '0',
self::MIGRATION_22 => '0',
Expand Down Expand Up @@ -745,4 +748,19 @@ public function linkToRoute(string $route, array $args): string {

return $path;
}


/**
* Enforce or Block circle's config/type
*
* @param Circle $circle
*/
public function confirmAllowedCircleTypes(Circle $circle): void {
$config = $circle->getConfig();
$config |= $this->getAppValueInt(ConfigService::CIRCLE_TYPES_FORCE);
$block = $this->getAppValueInt(ConfigService::CIRCLE_TYPES_BLOCK);
$config |= $block;
$config -= $block;
$circle->setConfig($config);
}
}