Skip to content

Commit 087da84

Browse files
committed
block/force circle types
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
1 parent f1a37b4 commit 087da84

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

lib/FederatedItems/CircleConfig.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
use OCA\Circles\Model\Circle;
4141
use OCA\Circles\Model\Federated\FederatedEvent;
4242
use OCA\Circles\Model\Helpers\MemberHelper;
43+
use OCA\Circles\Service\ConfigService;
4344

4445
/**
4546
* Class CircleConfig
@@ -55,14 +56,19 @@ class CircleConfig implements
5556
/** @var CircleRequest */
5657
private $circleRequest;
5758

59+
/** @var ConfigService */
60+
private $configService;
61+
5862

5963
/**
6064
* CircleConfig constructor.
6165
*
6266
* @param CircleRequest $circleRequest
67+
* @param ConfigService $configService
6368
*/
64-
public function __construct(CircleRequest $circleRequest) {
69+
public function __construct(CircleRequest $circleRequest, ConfigService $configService) {
6570
$this->circleRequest = $circleRequest;
71+
$this->configService = $configService;
6672
}
6773

6874

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

136-
$event->getData()->sInt('config', $config);
137-
138142
$new = clone $circle;
139143
$new->setConfig($config);
144+
$this->configService->confirmAllowedCircleTypes($new);
145+
146+
$event->getData()->sInt('config', $new->getConfig());
140147

141148
$event->setOutcome($this->serialize($new));
142149
}

lib/Service/CircleService.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ public function create(
192192
}
193193

194194
$this->confirmName($circle);
195+
$this->configService->confirmAllowedCircleTypes($circle);
195196

196197
$member = new Member();
197198
$member->importFromIFederatedUser($owner);

lib/Service/ConfigService.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ class ConfigService {
105105
public const MEMBERS_LIMIT = 'members_limit';
106106
public const ACTIVITY_ON_NEW_CIRCLE = 'creation_activity';
107107
public const ALLOWED_TYPES = 'allowed_types';
108-
108+
public const CIRCLE_TYPES_FORCE = 'circle_types_force';
109+
public const CIRCLE_TYPES_BLOCK = 'circle_types_block';
109110
public const MIGRATION_BYPASS = 'migration_bypass';
110111
public const MIGRATION_22 = 'migration_22';
111112
public const MIGRATION_22_1 = 'migration_22_1';
@@ -180,6 +181,8 @@ class ConfigService {
180181
self::MEMBERS_LIMIT => '-1',
181182
self::ACTIVITY_ON_NEW_CIRCLE => '1',
182183
self::ALLOWED_TYPES => Member::ALLOWING_ALL_TYPES,
184+
self::CIRCLE_TYPES_FORCE => '0',
185+
self::CIRCLE_TYPES_BLOCK => '0',
183186

184187
self::MIGRATION_BYPASS => '0',
185188
self::MIGRATION_22 => '0',
@@ -753,4 +756,19 @@ public function linkToRoute(string $route, array $args): string {
753756

754757
return $path;
755758
}
759+
760+
761+
/**
762+
* Enforce or Block circle's config/type
763+
*
764+
* @param Circle $circle
765+
*/
766+
public function confirmAllowedCircleTypes(Circle $circle): void {
767+
$config = $circle->getConfig();
768+
$config |= $this->getAppValueInt(ConfigService::CIRCLE_TYPES_FORCE);
769+
$block = $this->getAppValueInt(ConfigService::CIRCLE_TYPES_BLOCK);
770+
$config |= $block;
771+
$config -= $block;
772+
$circle->setConfig($config);
773+
}
756774
}

0 commit comments

Comments
 (0)