Files
breadcrumb-the-shire/core/Service/Directory/DirectorySettingsGateway.php

41 lines
1.1 KiB
PHP
Raw Normal View History

2026-02-23 12:58:19 +01:00
<?php
namespace MintyPHP\Service\Directory;
use MintyPHP\Service\Settings\SettingsAppGateway;
2026-03-06 00:44:52 +01:00
use MintyPHP\Service\Settings\SettingsDefaultsGateway;
2026-02-23 12:58:19 +01:00
class DirectorySettingsGateway
{
public function __construct(
private readonly SettingsDefaultsGateway $settingsDefaultsGateway,
private readonly SettingsAppGateway $settingsAppGateway
) {
2026-02-23 12:58:19 +01:00
}
public function setDefaultTenantId(?int $tenantId): void
{
2026-03-06 00:44:52 +01:00
$this->settingsDefaultsGateway->setDefaultTenantId($tenantId);
2026-02-23 12:58:19 +01:00
}
public function setDefaultDepartmentId(?int $departmentId): void
{
2026-03-06 00:44:52 +01:00
$this->settingsDefaultsGateway->setDefaultDepartmentId($departmentId);
2026-02-23 12:58:19 +01:00
}
public function setDefaultRoleId(?int $roleId): void
{
2026-03-06 00:44:52 +01:00
$this->settingsDefaultsGateway->setDefaultRoleId($roleId);
2026-02-23 12:58:19 +01:00
}
public function isAllowedTheme(string $theme): bool
{
return $this->settingsAppGateway->isAllowedTheme($theme);
}
refactor(tenants): visibility form requires explicit appearance values Simplifies the tenant Visibility tab to match the tenant-only appearance model established by the previous commits: - primary_color: now required. Removed the "No brand color / Use system default (no brand accent)" toggle — every tenant carries a concrete primary color. Legacy NULL rows render the neutral app default (#2fa4a4) in the color picker and are converted to that explicit hex on save. - default_theme: the select no longer offers a "Use system default" empty option. Legacy NULL rows resolve to 'light' at render time; saves always persist a valid theme via SettingsAppGateway::normalizeTheme(). - allow_user_theme: replaced the tri-state "Use system default (allowed) / Force allow / Force disallow" select with a single boolean switch ("Users may choose their own theme"). Legacy NULL rows load as checked. Saves persist 0/1 explicitly. TenantService: sanitize no longer reads primary_color_use_default or allow_user_theme_mode; it validates primary_color as a required hex and treats allow_user_theme as a plain boolean. Both create and update paths write concrete values only — no more NULL writes for these three fields. DirectorySettingsGateway gains a normalizeTheme() delegate so TenantService can route through the same gateway it uses for isAllowedTheme(). Removed now-unused app-color-default-toggle JS component + its runtime registration + its architecture-test entry. i18n cleanup: "No brand color", "Use system default (no brand accent)", "When enabled the tenant renders without a brand accent color.", "Use system default (light)", "Use system default (allowed)", "Force allow user theme", "Force disallow user theme", "User theme policy is invalid" all removed. New copy: "Users may choose their own theme" + helper text, plus a tightened tab blockquote. Tests: TenantServiceTest validInput() updated to send concrete values; settingsGateway mock gets normalizeTheme() + isAllowedTheme() defaults. All 1985 tests pass; PHPStan level 5 clean; QG-006 clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:10:44 +02:00
public function normalizeTheme(?string $theme): string
{
return $this->settingsAppGateway->normalizeTheme($theme);
}
2026-02-23 12:58:19 +01:00
}