agent foundation
This commit is contained in:
@@ -12,7 +12,15 @@ use MintyPHP\Service\Tenant\TenantService;
|
||||
class AdminSettingsService
|
||||
{
|
||||
public function __construct(
|
||||
private readonly SettingGateway $settingGateway,
|
||||
private readonly SettingsDefaultsGateway $settingsDefaultsGateway,
|
||||
private readonly SettingsAppGateway $settingsAppGateway,
|
||||
private readonly SettingsApiPolicyGateway $settingsApiPolicyGateway,
|
||||
private readonly SettingsUserLifecycleGateway $settingsUserLifecycleGateway,
|
||||
private readonly SettingsSystemAuditGateway $settingsSystemAuditGateway,
|
||||
private readonly SettingsFrontendTelemetryGateway $settingsFrontendTelemetryGateway,
|
||||
private readonly SettingsMicrosoftGateway $settingsMicrosoftGateway,
|
||||
private readonly SettingsSmtpGateway $settingsSmtpGateway,
|
||||
private readonly SettingsMetadataGateway $settingsMetadataGateway,
|
||||
private readonly SettingCacheService $settingCacheService,
|
||||
private readonly TenantService $tenantService,
|
||||
private readonly RoleService $roleService,
|
||||
@@ -40,58 +48,64 @@ class AdminSettingsService
|
||||
'roles' => $roles,
|
||||
'departments' => $departments,
|
||||
'values' => [
|
||||
'default_tenant_id' => $this->settingGateway->getDefaultTenantId(),
|
||||
'default_role_id' => $this->settingGateway->getDefaultRoleId(),
|
||||
'default_department_id' => $this->settingGateway->getDefaultDepartmentId(),
|
||||
'app_title' => $this->settingGateway->getValue(SettingService::APP_TITLE_KEY),
|
||||
'app_locale' => $this->settingGateway->getValue(SettingService::APP_LOCALE_KEY),
|
||||
'app_theme' => $this->settingGateway->getValue(SettingService::APP_THEME_KEY),
|
||||
'app_theme_user' => $this->settingGateway->isUserThemeAllowed(),
|
||||
'app_registration' => $this->settingGateway->isRegistrationEnabled(),
|
||||
'app_primary_color' => $this->settingGateway->getValue(SettingService::APP_PRIMARY_COLOR_KEY),
|
||||
'api_token_default_ttl_days' => $this->settingGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => $this->settingGateway->getApiTokenMaxTtlDays(),
|
||||
'user_inactivity_deactivate_days' => $this->settingGateway->getUserInactivityDeactivateDays(),
|
||||
'user_inactivity_delete_days' => $this->settingGateway->getUserInactivityDeleteDays(),
|
||||
'api_cors_allowed_origins' => $this->settingGateway->getApiCorsAllowedOriginsText(),
|
||||
'system_audit_enabled' => $this->settingGateway->isSystemAuditEnabled(),
|
||||
'system_audit_retention_days' => $this->settingGateway->getSystemAuditRetentionDays(),
|
||||
'microsoft_shared_client_id' => $this->settingGateway->getValue(SettingService::MICROSOFT_SHARED_CLIENT_ID_KEY),
|
||||
'microsoft_authority' => $this->settingGateway->getMicrosoftAuthority(),
|
||||
'smtp_host' => $this->settingGateway->getValue(SettingService::SMTP_HOST_KEY),
|
||||
'smtp_port' => $this->settingGateway->getValue(SettingService::SMTP_PORT_KEY),
|
||||
'smtp_user' => $this->settingGateway->getValue(SettingService::SMTP_USER_KEY),
|
||||
'smtp_secure' => $this->settingGateway->getSmtpSecure(),
|
||||
'smtp_from' => $this->settingGateway->getValue(SettingService::SMTP_FROM_KEY),
|
||||
'smtp_from_name' => $this->settingGateway->getValue(SettingService::SMTP_FROM_NAME_KEY),
|
||||
'default_tenant_id' => $this->settingsDefaultsGateway->getDefaultTenantId(),
|
||||
'default_role_id' => $this->settingsDefaultsGateway->getDefaultRoleId(),
|
||||
'default_department_id' => $this->settingsDefaultsGateway->getDefaultDepartmentId(),
|
||||
'app_title' => $this->settingsMetadataGateway->getValue(SettingKeys::APP_TITLE_KEY),
|
||||
'app_locale' => $this->settingsMetadataGateway->getValue(SettingKeys::APP_LOCALE_KEY),
|
||||
'app_theme' => $this->settingsMetadataGateway->getValue(SettingKeys::APP_THEME_KEY),
|
||||
'app_theme_user' => $this->settingsAppGateway->isUserThemeAllowed(),
|
||||
'app_registration' => $this->settingsAppGateway->isRegistrationEnabled(),
|
||||
'app_primary_color' => $this->settingsMetadataGateway->getValue(SettingKeys::APP_PRIMARY_COLOR_KEY),
|
||||
'api_token_default_ttl_days' => $this->settingsApiPolicyGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => $this->settingsApiPolicyGateway->getApiTokenMaxTtlDays(),
|
||||
'user_inactivity_deactivate_days' => $this->settingsUserLifecycleGateway->getUserInactivityDeactivateDays(),
|
||||
'user_inactivity_delete_days' => $this->settingsUserLifecycleGateway->getUserInactivityDeleteDays(),
|
||||
'api_cors_allowed_origins' => $this->settingsApiPolicyGateway->getApiCorsAllowedOriginsText(),
|
||||
'system_audit_enabled' => $this->settingsSystemAuditGateway->isSystemAuditEnabled(),
|
||||
'system_audit_retention_days' => $this->settingsSystemAuditGateway->getSystemAuditRetentionDays(),
|
||||
'frontend_telemetry_enabled' => $this->settingsFrontendTelemetryGateway->isFrontendTelemetryEnabled(),
|
||||
'frontend_telemetry_sample_rate' => $this->settingsFrontendTelemetryGateway->getFrontendTelemetrySampleRate(),
|
||||
'frontend_telemetry_allowed_events' => $this->settingsFrontendTelemetryGateway->getFrontendTelemetryAllowedEvents(),
|
||||
'microsoft_shared_client_id' => $this->settingsMetadataGateway->getValue(SettingKeys::MICROSOFT_SHARED_CLIENT_ID_KEY),
|
||||
'microsoft_authority' => $this->settingsMicrosoftGateway->getMicrosoftAuthority(),
|
||||
'smtp_host' => $this->settingsMetadataGateway->getValue(SettingKeys::SMTP_HOST_KEY),
|
||||
'smtp_port' => $this->settingsMetadataGateway->getValue(SettingKeys::SMTP_PORT_KEY),
|
||||
'smtp_user' => $this->settingsMetadataGateway->getValue(SettingKeys::SMTP_USER_KEY),
|
||||
'smtp_secure' => $this->settingsSmtpGateway->getSmtpSecure(),
|
||||
'smtp_from' => $this->settingsMetadataGateway->getValue(SettingKeys::SMTP_FROM_KEY),
|
||||
'smtp_from_name' => $this->settingsMetadataGateway->getValue(SettingKeys::SMTP_FROM_NAME_KEY),
|
||||
],
|
||||
'settings' => [
|
||||
'default_tenant' => $this->settingGateway->get(SettingService::DEFAULT_TENANT_KEY),
|
||||
'default_role' => $this->settingGateway->get(SettingService::DEFAULT_ROLE_KEY),
|
||||
'default_department' => $this->settingGateway->get(SettingService::DEFAULT_DEPARTMENT_KEY),
|
||||
'app_title' => $this->settingGateway->get(SettingService::APP_TITLE_KEY),
|
||||
'app_locale' => $this->settingGateway->get(SettingService::APP_LOCALE_KEY),
|
||||
'app_theme' => $this->settingGateway->get(SettingService::APP_THEME_KEY),
|
||||
'app_theme_user' => $this->settingGateway->get(SettingService::APP_THEME_USER_KEY),
|
||||
'app_registration' => $this->settingGateway->get(SettingService::APP_REGISTRATION_KEY),
|
||||
'app_primary_color' => $this->settingGateway->get(SettingService::APP_PRIMARY_COLOR_KEY),
|
||||
'api_token_default_ttl_days' => $this->settingGateway->get(SettingService::API_TOKEN_DEFAULT_TTL_DAYS_KEY),
|
||||
'api_token_max_ttl_days' => $this->settingGateway->get(SettingService::API_TOKEN_MAX_TTL_DAYS_KEY),
|
||||
'user_inactivity_deactivate_days' => $this->settingGateway->get(SettingService::USER_INACTIVITY_DEACTIVATE_DAYS_KEY),
|
||||
'user_inactivity_delete_days' => $this->settingGateway->get(SettingService::USER_INACTIVITY_DELETE_DAYS_KEY),
|
||||
'api_cors_allowed_origins' => $this->settingGateway->get(SettingService::API_CORS_ALLOWED_ORIGINS_KEY),
|
||||
'system_audit_enabled' => $this->settingGateway->get(SettingService::SYSTEM_AUDIT_ENABLED_KEY),
|
||||
'system_audit_retention_days' => $this->settingGateway->get(SettingService::SYSTEM_AUDIT_RETENTION_DAYS_KEY),
|
||||
'microsoft_shared_client_id' => $this->settingGateway->get(SettingService::MICROSOFT_SHARED_CLIENT_ID_KEY),
|
||||
'microsoft_shared_client_secret_enc' => $this->settingGateway->get(SettingService::MICROSOFT_SHARED_CLIENT_SECRET_ENC_KEY),
|
||||
'microsoft_authority' => $this->settingGateway->get(SettingService::MICROSOFT_AUTHORITY_KEY),
|
||||
'smtp_host' => $this->settingGateway->get(SettingService::SMTP_HOST_KEY),
|
||||
'smtp_port' => $this->settingGateway->get(SettingService::SMTP_PORT_KEY),
|
||||
'smtp_user' => $this->settingGateway->get(SettingService::SMTP_USER_KEY),
|
||||
'smtp_password' => $this->settingGateway->get(SettingService::SMTP_PASSWORD_KEY),
|
||||
'smtp_secure' => $this->settingGateway->get(SettingService::SMTP_SECURE_KEY),
|
||||
'smtp_from' => $this->settingGateway->get(SettingService::SMTP_FROM_KEY),
|
||||
'smtp_from_name' => $this->settingGateway->get(SettingService::SMTP_FROM_NAME_KEY),
|
||||
'default_tenant' => $this->settingsMetadataGateway->get(SettingKeys::DEFAULT_TENANT_KEY),
|
||||
'default_role' => $this->settingsMetadataGateway->get(SettingKeys::DEFAULT_ROLE_KEY),
|
||||
'default_department' => $this->settingsMetadataGateway->get(SettingKeys::DEFAULT_DEPARTMENT_KEY),
|
||||
'app_title' => $this->settingsMetadataGateway->get(SettingKeys::APP_TITLE_KEY),
|
||||
'app_locale' => $this->settingsMetadataGateway->get(SettingKeys::APP_LOCALE_KEY),
|
||||
'app_theme' => $this->settingsMetadataGateway->get(SettingKeys::APP_THEME_KEY),
|
||||
'app_theme_user' => $this->settingsMetadataGateway->get(SettingKeys::APP_THEME_USER_KEY),
|
||||
'app_registration' => $this->settingsMetadataGateway->get(SettingKeys::APP_REGISTRATION_KEY),
|
||||
'app_primary_color' => $this->settingsMetadataGateway->get(SettingKeys::APP_PRIMARY_COLOR_KEY),
|
||||
'api_token_default_ttl_days' => $this->settingsMetadataGateway->get(SettingKeys::API_TOKEN_DEFAULT_TTL_DAYS_KEY),
|
||||
'api_token_max_ttl_days' => $this->settingsMetadataGateway->get(SettingKeys::API_TOKEN_MAX_TTL_DAYS_KEY),
|
||||
'user_inactivity_deactivate_days' => $this->settingsMetadataGateway->get(SettingKeys::USER_INACTIVITY_DEACTIVATE_DAYS_KEY),
|
||||
'user_inactivity_delete_days' => $this->settingsMetadataGateway->get(SettingKeys::USER_INACTIVITY_DELETE_DAYS_KEY),
|
||||
'api_cors_allowed_origins' => $this->settingsMetadataGateway->get(SettingKeys::API_CORS_ALLOWED_ORIGINS_KEY),
|
||||
'system_audit_enabled' => $this->settingsMetadataGateway->get(SettingKeys::SYSTEM_AUDIT_ENABLED_KEY),
|
||||
'system_audit_retention_days' => $this->settingsMetadataGateway->get(SettingKeys::SYSTEM_AUDIT_RETENTION_DAYS_KEY),
|
||||
'frontend_telemetry_enabled' => $this->settingsMetadataGateway->get(SettingKeys::FRONTEND_TELEMETRY_ENABLED_KEY),
|
||||
'frontend_telemetry_sample_rate' => $this->settingsMetadataGateway->get(SettingKeys::FRONTEND_TELEMETRY_SAMPLE_RATE_KEY),
|
||||
'frontend_telemetry_allowed_events' => $this->settingsMetadataGateway->get(SettingKeys::FRONTEND_TELEMETRY_ALLOWED_EVENTS_KEY),
|
||||
'microsoft_shared_client_id' => $this->settingsMetadataGateway->get(SettingKeys::MICROSOFT_SHARED_CLIENT_ID_KEY),
|
||||
'microsoft_shared_client_secret_enc' => $this->settingsMetadataGateway->get(SettingKeys::MICROSOFT_SHARED_CLIENT_SECRET_ENC_KEY),
|
||||
'microsoft_authority' => $this->settingsMetadataGateway->get(SettingKeys::MICROSOFT_AUTHORITY_KEY),
|
||||
'smtp_host' => $this->settingsMetadataGateway->get(SettingKeys::SMTP_HOST_KEY),
|
||||
'smtp_port' => $this->settingsMetadataGateway->get(SettingKeys::SMTP_PORT_KEY),
|
||||
'smtp_user' => $this->settingsMetadataGateway->get(SettingKeys::SMTP_USER_KEY),
|
||||
'smtp_password' => $this->settingsMetadataGateway->get(SettingKeys::SMTP_PASSWORD_KEY),
|
||||
'smtp_secure' => $this->settingsMetadataGateway->get(SettingKeys::SMTP_SECURE_KEY),
|
||||
'smtp_from' => $this->settingsMetadataGateway->get(SettingKeys::SMTP_FROM_KEY),
|
||||
'smtp_from_name' => $this->settingsMetadataGateway->get(SettingKeys::SMTP_FROM_NAME_KEY),
|
||||
],
|
||||
'active_login_tokens' => $this->rememberTokenRepository->countActive(),
|
||||
'active_api_tokens' => $this->apiTokenRepository->countActive(),
|
||||
@@ -115,6 +129,9 @@ class AdminSettingsService
|
||||
$apiCorsAllowedOrigins = $this->normalizeScalarText($post['api_cors_allowed_origins'] ?? '');
|
||||
$systemAuditEnabled = isset($post['system_audit_enabled']);
|
||||
$systemAuditRetentionDays = (int) ($post['system_audit_retention_days'] ?? 0);
|
||||
$frontendTelemetryEnabled = isset($post['frontend_telemetry_enabled']);
|
||||
$frontendTelemetrySampleRate = $this->normalizeScalarText($post['frontend_telemetry_sample_rate'] ?? '');
|
||||
$frontendTelemetryAllowedEvents = $post['frontend_telemetry_allowed_events'] ?? [];
|
||||
$appPrimaryColor = $this->normalizePrimaryColor($post['app_primary_color'] ?? '');
|
||||
$smtpHost = trim((string) ($post['smtp_host'] ?? ''));
|
||||
$smtpPort = (int) ($post['smtp_port'] ?? 0);
|
||||
@@ -129,41 +146,44 @@ class AdminSettingsService
|
||||
|
||||
$errors = [];
|
||||
$beforeAudit = [
|
||||
'default_tenant_id' => $this->settingGateway->getDefaultTenantId(),
|
||||
'default_role_id' => $this->settingGateway->getDefaultRoleId(),
|
||||
'default_department_id' => $this->settingGateway->getDefaultDepartmentId(),
|
||||
'app_locale' => $this->settingGateway->getAppLocale(),
|
||||
'app_theme' => $this->settingGateway->getAppTheme(),
|
||||
'app_theme_user' => $this->settingGateway->isUserThemeAllowed(),
|
||||
'app_registration' => $this->settingGateway->isRegistrationEnabled(),
|
||||
'app_primary_color' => $this->settingGateway->getAppPrimaryColor(),
|
||||
'api_token_default_ttl_days' => $this->settingGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => $this->settingGateway->getApiTokenMaxTtlDays(),
|
||||
'user_inactivity_deactivate_days' => $this->settingGateway->getUserInactivityDeactivateDays(),
|
||||
'user_inactivity_delete_days' => $this->settingGateway->getUserInactivityDeleteDays(),
|
||||
'system_audit_enabled' => $this->settingGateway->isSystemAuditEnabled(),
|
||||
'system_audit_retention_days' => $this->settingGateway->getSystemAuditRetentionDays(),
|
||||
'default_tenant_id' => $this->settingsDefaultsGateway->getDefaultTenantId(),
|
||||
'default_role_id' => $this->settingsDefaultsGateway->getDefaultRoleId(),
|
||||
'default_department_id' => $this->settingsDefaultsGateway->getDefaultDepartmentId(),
|
||||
'app_locale' => $this->settingsAppGateway->getAppLocale(),
|
||||
'app_theme' => $this->settingsAppGateway->getAppTheme(),
|
||||
'app_theme_user' => $this->settingsAppGateway->isUserThemeAllowed(),
|
||||
'app_registration' => $this->settingsAppGateway->isRegistrationEnabled(),
|
||||
'app_primary_color' => $this->settingsAppGateway->getAppPrimaryColor(),
|
||||
'api_token_default_ttl_days' => $this->settingsApiPolicyGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => $this->settingsApiPolicyGateway->getApiTokenMaxTtlDays(),
|
||||
'user_inactivity_deactivate_days' => $this->settingsUserLifecycleGateway->getUserInactivityDeactivateDays(),
|
||||
'user_inactivity_delete_days' => $this->settingsUserLifecycleGateway->getUserInactivityDeleteDays(),
|
||||
'system_audit_enabled' => $this->settingsSystemAuditGateway->isSystemAuditEnabled(),
|
||||
'system_audit_retention_days' => $this->settingsSystemAuditGateway->getSystemAuditRetentionDays(),
|
||||
'frontend_telemetry_enabled' => $this->settingsFrontendTelemetryGateway->isFrontendTelemetryEnabled(),
|
||||
'frontend_telemetry_sample_rate' => $this->settingsFrontendTelemetryGateway->getFrontendTelemetrySampleRate(),
|
||||
'frontend_telemetry_allowed_events' => $this->settingsFrontendTelemetryGateway->getFrontendTelemetryAllowedEvents(),
|
||||
];
|
||||
|
||||
$this->settingGateway->setDefaultTenantId($defaultTenantId > 0 ? $defaultTenantId : null);
|
||||
$this->settingGateway->setDefaultRoleId($defaultRoleId > 0 ? $defaultRoleId : null);
|
||||
$this->settingGateway->setDefaultDepartmentId($defaultDepartmentId > 0 ? $defaultDepartmentId : null);
|
||||
$this->settingGateway->setAppTitle($appTitle);
|
||||
$this->settingGateway->setAppLocale($appLocale);
|
||||
$this->settingGateway->setAppTheme($appTheme);
|
||||
$this->settingGateway->setUserThemeAllowed($appThemeUser);
|
||||
$this->settingGateway->setRegistrationEnabled($appRegistration);
|
||||
$this->settingsDefaultsGateway->setDefaultTenantId($defaultTenantId > 0 ? $defaultTenantId : null);
|
||||
$this->settingsDefaultsGateway->setDefaultRoleId($defaultRoleId > 0 ? $defaultRoleId : null);
|
||||
$this->settingsDefaultsGateway->setDefaultDepartmentId($defaultDepartmentId > 0 ? $defaultDepartmentId : null);
|
||||
$this->settingsAppGateway->setAppTitle($appTitle);
|
||||
$this->settingsAppGateway->setAppLocale($appLocale);
|
||||
$this->settingsAppGateway->setAppTheme($appTheme);
|
||||
$this->settingsAppGateway->setUserThemeAllowed($appThemeUser);
|
||||
$this->settingsAppGateway->setRegistrationEnabled($appRegistration);
|
||||
|
||||
$apiTokenMaxTtlOk = $this->settingGateway->setApiTokenMaxTtlDays($apiTokenMaxTtlDays > 0 ? $apiTokenMaxTtlDays : null);
|
||||
$apiTokenMaxTtlOk = $this->settingsApiPolicyGateway->setApiTokenMaxTtlDays($apiTokenMaxTtlDays > 0 ? $apiTokenMaxTtlDays : null);
|
||||
if (!$apiTokenMaxTtlOk) {
|
||||
$errors[] = ['message' => 'API token max lifetime is invalid', 'key' => 'api_token_max_ttl_invalid'];
|
||||
}
|
||||
$apiTokenTtlOk = $this->settingGateway->setApiTokenDefaultTtlDays($apiTokenDefaultTtlDays > 0 ? $apiTokenDefaultTtlDays : null);
|
||||
$apiTokenTtlOk = $this->settingsApiPolicyGateway->setApiTokenDefaultTtlDays($apiTokenDefaultTtlDays > 0 ? $apiTokenDefaultTtlDays : null);
|
||||
if (!$apiTokenTtlOk) {
|
||||
$errors[] = ['message' => 'API token default lifetime is invalid', 'key' => 'api_token_default_ttl_invalid'];
|
||||
}
|
||||
|
||||
$userDeactivateOk = $this->settingGateway->setUserInactivityDeactivateDays($userInactivityDeactivateDays);
|
||||
$userDeactivateOk = $this->settingsUserLifecycleGateway->setUserInactivityDeactivateDays($userInactivityDeactivateDays);
|
||||
if (!$userDeactivateOk) {
|
||||
$errors[] = [
|
||||
'message' => 'User inactivity deactivation period is invalid',
|
||||
@@ -172,7 +192,7 @@ class AdminSettingsService
|
||||
}
|
||||
|
||||
if ($userInactivityDeactivateDays > 0) {
|
||||
$userDeleteOk = $this->settingGateway->setUserInactivityDeleteDays($userInactivityDeleteDays);
|
||||
$userDeleteOk = $this->settingsUserLifecycleGateway->setUserInactivityDeleteDays($userInactivityDeleteDays);
|
||||
if (!$userDeleteOk) {
|
||||
$errors[] = [
|
||||
'message' => 'User inactivity deletion period is invalid',
|
||||
@@ -186,56 +206,76 @@ class AdminSettingsService
|
||||
'key' => 'user_inactivity_delete_requires_deactivate',
|
||||
];
|
||||
}
|
||||
$this->settingGateway->setUserInactivityDeleteDays(0);
|
||||
$this->settingsUserLifecycleGateway->setUserInactivityDeleteDays(0);
|
||||
}
|
||||
|
||||
$apiCorsOriginsOk = $this->settingGateway->setApiCorsAllowedOrigins($apiCorsAllowedOrigins);
|
||||
$apiCorsOriginsOk = $this->settingsApiPolicyGateway->setApiCorsAllowedOrigins($apiCorsAllowedOrigins);
|
||||
if (!$apiCorsOriginsOk) {
|
||||
$errors[] = ['message' => 'CORS allowed origins are invalid', 'key' => 'api_cors_allowed_origins_invalid'];
|
||||
}
|
||||
|
||||
$systemAuditEnabledOk = $this->settingGateway->setSystemAuditEnabled($systemAuditEnabled);
|
||||
$systemAuditEnabledOk = $this->settingsSystemAuditGateway->setSystemAuditEnabled($systemAuditEnabled);
|
||||
if (!$systemAuditEnabledOk) {
|
||||
$errors[] = ['message' => 'System audit setting is invalid', 'key' => 'system_audit_enabled_invalid'];
|
||||
}
|
||||
|
||||
$systemAuditRetentionOk = $this->settingGateway->setSystemAuditRetentionDays(
|
||||
$systemAuditRetentionOk = $this->settingsSystemAuditGateway->setSystemAuditRetentionDays(
|
||||
$systemAuditRetentionDays > 0 ? $systemAuditRetentionDays : null
|
||||
);
|
||||
if (!$systemAuditRetentionOk) {
|
||||
$errors[] = ['message' => 'System audit retention is invalid', 'key' => 'system_audit_retention_invalid'];
|
||||
}
|
||||
|
||||
$primaryOk = $this->settingGateway->setAppPrimaryColor($appPrimaryColor);
|
||||
$frontendTelemetryEnabledOk = $this->settingsFrontendTelemetryGateway->setFrontendTelemetryEnabled($frontendTelemetryEnabled);
|
||||
if (!$frontendTelemetryEnabledOk) {
|
||||
$errors[] = ['message' => 'Frontend telemetry enabled setting is invalid', 'key' => 'frontend_telemetry_enabled_invalid'];
|
||||
}
|
||||
|
||||
$frontendTelemetryRateValue = null;
|
||||
if ($frontendTelemetrySampleRate !== '') {
|
||||
$frontendTelemetryRateValue = is_numeric($frontendTelemetrySampleRate)
|
||||
? (float) $frontendTelemetrySampleRate
|
||||
: NAN;
|
||||
}
|
||||
$frontendTelemetrySampleRateOk = $this->settingsFrontendTelemetryGateway->setFrontendTelemetrySampleRate($frontendTelemetryRateValue);
|
||||
if (!$frontendTelemetrySampleRateOk) {
|
||||
$errors[] = ['message' => 'Frontend telemetry sample rate is invalid', 'key' => 'frontend_telemetry_sample_rate_invalid'];
|
||||
}
|
||||
|
||||
$frontendTelemetryAllowedEventsOk = $this->settingsFrontendTelemetryGateway->setFrontendTelemetryAllowedEvents($frontendTelemetryAllowedEvents);
|
||||
if (!$frontendTelemetryAllowedEventsOk) {
|
||||
$errors[] = ['message' => 'Frontend telemetry allowed events are invalid', 'key' => 'frontend_telemetry_allowed_events_invalid'];
|
||||
}
|
||||
|
||||
$primaryOk = $this->settingsAppGateway->setAppPrimaryColor($appPrimaryColor);
|
||||
if (!$primaryOk) {
|
||||
$appPrimaryColor = '';
|
||||
$errors[] = ['message' => 'Primary color is invalid', 'key' => 'app_primary_invalid'];
|
||||
}
|
||||
|
||||
$this->settingGateway->setSmtpHost($smtpHost);
|
||||
$this->settingGateway->setSmtpPort($smtpPort > 0 ? $smtpPort : null);
|
||||
$this->settingGateway->setSmtpUser($smtpUser);
|
||||
$this->settingsSmtpGateway->setSmtpHost($smtpHost);
|
||||
$this->settingsSmtpGateway->setSmtpPort($smtpPort > 0 ? $smtpPort : null);
|
||||
$this->settingsSmtpGateway->setSmtpUser($smtpUser);
|
||||
if (trim($smtpPassword) !== '') {
|
||||
$this->settingGateway->setSmtpPassword($smtpPassword);
|
||||
$this->settingsSmtpGateway->setSmtpPassword($smtpPassword);
|
||||
}
|
||||
$this->settingGateway->setSmtpSecure($smtpSecure);
|
||||
$this->settingGateway->setSmtpFrom($smtpFrom);
|
||||
$this->settingGateway->setSmtpFromName($smtpFromName);
|
||||
$this->settingsSmtpGateway->setSmtpSecure($smtpSecure);
|
||||
$this->settingsSmtpGateway->setSmtpFrom($smtpFrom);
|
||||
$this->settingsSmtpGateway->setSmtpFromName($smtpFromName);
|
||||
|
||||
$msClientIdOk = $this->settingGateway->setMicrosoftSharedClientId($microsoftSharedClientId);
|
||||
$msClientIdOk = $this->settingsMicrosoftGateway->setMicrosoftSharedClientId($microsoftSharedClientId);
|
||||
if (!$msClientIdOk) {
|
||||
$errors[] = ['message' => 'Microsoft client ID is invalid', 'key' => 'microsoft_client_id_invalid'];
|
||||
}
|
||||
|
||||
$msAuthorityOk = $this->settingGateway->setMicrosoftAuthority($microsoftAuthority);
|
||||
$msAuthorityOk = $this->settingsMicrosoftGateway->setMicrosoftAuthority($microsoftAuthority);
|
||||
if (!$msAuthorityOk) {
|
||||
$errors[] = ['message' => 'Microsoft authority is invalid', 'key' => 'microsoft_authority_invalid'];
|
||||
}
|
||||
|
||||
if (trim($microsoftSharedClientSecret) !== '') {
|
||||
try {
|
||||
$this->settingGateway->setMicrosoftSharedClientSecret($microsoftSharedClientSecret);
|
||||
} catch (\Throwable) {
|
||||
$msSecretOk = $this->settingsMicrosoftGateway->setMicrosoftSharedClientSecret($microsoftSharedClientSecret);
|
||||
if (!$msSecretOk) {
|
||||
$errors[] = [
|
||||
'message' => 'Microsoft client secret could not be encrypted',
|
||||
'key' => 'microsoft_client_secret_invalid',
|
||||
@@ -250,26 +290,32 @@ class AdminSettingsService
|
||||
'app_theme_user' => $appThemeUser ? '1' : '0',
|
||||
'app_registration' => $appRegistration ? '1' : '0',
|
||||
'app_primary_color' => $appPrimaryColor !== '' ? $appPrimaryColor : null,
|
||||
'api_token_default_ttl_days' => (string) $this->settingGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => (string) $this->settingGateway->getApiTokenMaxTtlDays(),
|
||||
'api_cors_allowed_origins' => $this->settingGateway->getValue(SettingService::API_CORS_ALLOWED_ORIGINS_KEY),
|
||||
'api_token_default_ttl_days' => (string) $this->settingsApiPolicyGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => (string) $this->settingsApiPolicyGateway->getApiTokenMaxTtlDays(),
|
||||
'api_cors_allowed_origins' => $this->settingsMetadataGateway->getValue(SettingKeys::API_CORS_ALLOWED_ORIGINS_KEY),
|
||||
'frontend_telemetry_enabled' => $this->settingsFrontendTelemetryGateway->isFrontendTelemetryEnabled() ? '1' : '0',
|
||||
'frontend_telemetry_sample_rate' => (string) $this->settingsFrontendTelemetryGateway->getFrontendTelemetrySampleRate(),
|
||||
'frontend_telemetry_allowed_events' => implode(',', $this->settingsFrontendTelemetryGateway->getFrontendTelemetryAllowedEvents()),
|
||||
]);
|
||||
|
||||
$afterAudit = [
|
||||
'default_tenant_id' => $this->settingGateway->getDefaultTenantId(),
|
||||
'default_role_id' => $this->settingGateway->getDefaultRoleId(),
|
||||
'default_department_id' => $this->settingGateway->getDefaultDepartmentId(),
|
||||
'app_locale' => $this->settingGateway->getAppLocale(),
|
||||
'app_theme' => $this->settingGateway->getAppTheme(),
|
||||
'app_theme_user' => $this->settingGateway->isUserThemeAllowed(),
|
||||
'app_registration' => $this->settingGateway->isRegistrationEnabled(),
|
||||
'app_primary_color' => $this->settingGateway->getAppPrimaryColor(),
|
||||
'api_token_default_ttl_days' => $this->settingGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => $this->settingGateway->getApiTokenMaxTtlDays(),
|
||||
'user_inactivity_deactivate_days' => $this->settingGateway->getUserInactivityDeactivateDays(),
|
||||
'user_inactivity_delete_days' => $this->settingGateway->getUserInactivityDeleteDays(),
|
||||
'system_audit_enabled' => $this->settingGateway->isSystemAuditEnabled(),
|
||||
'system_audit_retention_days' => $this->settingGateway->getSystemAuditRetentionDays(),
|
||||
'default_tenant_id' => $this->settingsDefaultsGateway->getDefaultTenantId(),
|
||||
'default_role_id' => $this->settingsDefaultsGateway->getDefaultRoleId(),
|
||||
'default_department_id' => $this->settingsDefaultsGateway->getDefaultDepartmentId(),
|
||||
'app_locale' => $this->settingsAppGateway->getAppLocale(),
|
||||
'app_theme' => $this->settingsAppGateway->getAppTheme(),
|
||||
'app_theme_user' => $this->settingsAppGateway->isUserThemeAllowed(),
|
||||
'app_registration' => $this->settingsAppGateway->isRegistrationEnabled(),
|
||||
'app_primary_color' => $this->settingsAppGateway->getAppPrimaryColor(),
|
||||
'api_token_default_ttl_days' => $this->settingsApiPolicyGateway->getApiTokenDefaultTtlDays(),
|
||||
'api_token_max_ttl_days' => $this->settingsApiPolicyGateway->getApiTokenMaxTtlDays(),
|
||||
'user_inactivity_deactivate_days' => $this->settingsUserLifecycleGateway->getUserInactivityDeactivateDays(),
|
||||
'user_inactivity_delete_days' => $this->settingsUserLifecycleGateway->getUserInactivityDeleteDays(),
|
||||
'system_audit_enabled' => $this->settingsSystemAuditGateway->isSystemAuditEnabled(),
|
||||
'system_audit_retention_days' => $this->settingsSystemAuditGateway->getSystemAuditRetentionDays(),
|
||||
'frontend_telemetry_enabled' => $this->settingsFrontendTelemetryGateway->isFrontendTelemetryEnabled(),
|
||||
'frontend_telemetry_sample_rate' => $this->settingsFrontendTelemetryGateway->getFrontendTelemetrySampleRate(),
|
||||
'frontend_telemetry_allowed_events' => $this->settingsFrontendTelemetryGateway->getFrontendTelemetryAllowedEvents(),
|
||||
];
|
||||
|
||||
$outcome = $errors === [] ? 'success' : 'failed';
|
||||
|
||||
Reference in New Issue
Block a user