From: Mathieu Suen Date: Tue, 12 Sep 2023 13:44:08 +0000 (+0200) Subject: SONAR-20393 Add provision project visibility option on auto provisioning X-Git-Tag: 10.3.0.82913~428 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=90fc005d78332215050cb7af82fe09ff49a6ff60;p=sonarqube.git SONAR-20393 Add provision project visibility option on auto provisioning --- diff --git a/server/sonar-web/src/main/js/api/mocks/SettingsServiceMock.ts b/server/sonar-web/src/main/js/api/mocks/SettingsServiceMock.ts index 9d28dd63c54..3c9d84e6828 100644 --- a/server/sonar-web/src/main/js/api/mocks/SettingsServiceMock.ts +++ b/server/sonar-web/src/main/js/api/mocks/SettingsServiceMock.ts @@ -111,6 +111,15 @@ export const DEFAULT_DEFINITIONS_MOCK = [ description: 'Lets do it', type: SettingType.BOOLEAN, }), + mockDefinition({ + category: 'authentication', + defaultValue: 'false', + key: 'provisioning.github.project.visibility.enabled', + subCategory: 'github', + name: 'Compilation Constants', + description: 'Lets do it', + type: SettingType.BOOLEAN, + }), ]; export default class SettingsServiceMock { diff --git a/server/sonar-web/src/main/js/apps/settings/components/authentication/GithubAuthenticationTab.tsx b/server/sonar-web/src/main/js/apps/settings/components/authentication/GithubAuthenticationTab.tsx index 7d378000a46..8445bc7b6c3 100644 --- a/server/sonar-web/src/main/js/apps/settings/components/authentication/GithubAuthenticationTab.tsx +++ b/server/sonar-web/src/main/js/apps/settings/components/authentication/GithubAuthenticationTab.tsx @@ -41,14 +41,18 @@ import AuthenticationFormField from './AuthenticationFormField'; import AutoProvisioningConsent from './AutoProvisionningConsent'; import ConfigurationForm from './ConfigurationForm'; import GitHubConfigurationValidity from './GitHubConfigurationValidity'; -import useGithubConfiguration, { GITHUB_JIT_FIELDS } from './hook/useGithubConfiguration'; +import useGithubConfiguration, { + GITHUB_ADDITIONAL_FIELDS, + GITHUB_JIT_FIELDS, + GITHUB_PROVISIONING_FIELDS, +} from './hook/useGithubConfiguration'; interface GithubAuthenticationProps { definitions: ExtendedSettingDefinition[]; currentTab: AuthenticationTabs; } -const GITHUB_EXCLUDED_FIELD = ['sonar.auth.github.enabled', 'sonar.auth.github.allowUsersToSignUp']; +const GITHUB_EXCLUDED_FIELD = ['sonar.auth.github.enabled', ...GITHUB_ADDITIONAL_FIELDS]; export default function GithubAuthenticationTab(props: GithubAuthenticationProps) { const { definitions, currentTab } = props; @@ -276,7 +280,7 @@ export default function GithubAuthenticationTab(props: GithubAuthenticationProps {githubProvisioningStatus && } -
+
+ {(newGithubProvisioningStatus ?? githubProvisioningStatus) && ( + <> +
+ {Object.values(values).map((val) => { + if (!GITHUB_PROVISIONING_FIELDS.includes(val.key)) { + return null; + } + return ( +
+ +
+ ); + })} + + )} ) : (

diff --git a/server/sonar-web/src/main/js/apps/settings/components/authentication/hook/useGithubConfiguration.ts b/server/sonar-web/src/main/js/apps/settings/components/authentication/hook/useGithubConfiguration.ts index 6f9ac390726..c6d8c8db224 100644 --- a/server/sonar-web/src/main/js/apps/settings/components/authentication/hook/useGithubConfiguration.ts +++ b/server/sonar-web/src/main/js/apps/settings/components/authentication/hook/useGithubConfiguration.ts @@ -34,12 +34,14 @@ export const GITHUB_APP_ID_FIELD = 'sonar.auth.github.appId'; export const GITHUB_API_URL_FIELD = 'sonar.auth.github.apiUrl'; export const GITHUB_CLIENT_ID_FIELD = 'sonar.auth.github.clientId.secured'; export const GITHUB_JIT_FIELDS = ['sonar.auth.github.allowUsersToSignUp']; +export const GITHUB_PROVISIONING_FIELDS = ['provisioning.github.project.visibility.enabled']; + +export const GITHUB_ADDITIONAL_FIELDS = [...GITHUB_JIT_FIELDS, ...GITHUB_PROVISIONING_FIELDS]; export const OPTIONAL_FIELDS = [ GITHUB_ENABLED_FIELD, - ...GITHUB_JIT_FIELDS, + ...GITHUB_ADDITIONAL_FIELDS, 'sonar.auth.github.organizations', 'sonar.auth.github.groupsSync', - 'provisioning.github.project.visibility.enabled', ]; export interface SamlSettingValue { @@ -65,10 +67,10 @@ export default function useGithubConfiguration(definitions: ExtendedSettingDefin newGithubProvisioningStatus !== undefined && newGithubProvisioningStatus !== githubProvisioningStatus; const hasGithubProvisioningConfigChange = - some(GITHUB_JIT_FIELDS, isValueChange) || hasGithubProvisioningTypeChange; + some(GITHUB_ADDITIONAL_FIELDS, isValueChange) || hasGithubProvisioningTypeChange; const resetJitSetting = () => { - GITHUB_JIT_FIELDS.forEach((s) => setNewValue(s)); + GITHUB_ADDITIONAL_FIELDS.forEach((s) => setNewValue(s)); }; const { mutate: saveSetting } = useSaveValueMutation(); @@ -89,7 +91,7 @@ export default function useGithubConfiguration(definitions: ExtendedSettingDefin }; const saveGroup = () => { - const newValues = GITHUB_JIT_FIELDS.map((settingKey) => values[settingKey]); + const newValues = GITHUB_ADDITIONAL_FIELDS.map((settingKey) => values[settingKey]); saveSettings(newValues); }; diff --git a/server/sonar-web/src/main/js/helpers/mocks/definitions-list.ts b/server/sonar-web/src/main/js/helpers/mocks/definitions-list.ts index 3d92f418a3a..354aa3925f5 100644 --- a/server/sonar-web/src/main/js/helpers/mocks/definitions-list.ts +++ b/server/sonar-web/src/main/js/helpers/mocks/definitions-list.ts @@ -2527,4 +2527,16 @@ export const definitions: ExtendedSettingDefinition[] = [ options: [], fields: [], }, + { + name: 'Provision project visibility', + key: 'provisioning.github.project.visibility.enabled', + description: + 'Change project visibility based on GitHub repository visibility. If disabled, every provisioned project will be private and will be seen only for those users that have explicit GitHub permissions for the according repository.', + type: SettingType.BOOLEAN, + category: 'authentication', + subCategory: 'github', + defaultValue: 'true', + options: [], + fields: [], + }, ];