diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-11-18 16:16:36 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-11-18 16:16:36 +0300 |
commit | 311b0269b4eb9839fa63f80c8d7a58f32b8138a0 (patch) | |
tree | 07e7870bca8aed6d61fdcc810731c50d2c40af47 /app/assets/javascripts/security_configuration | |
parent | 27909cef6c4170ed9205afa7426b8d3de47cbb0c (diff) |
Add latest changes from gitlab-org/gitlab@14-5-stable-eev14.5.0-rc42
Diffstat (limited to 'app/assets/javascripts/security_configuration')
5 files changed, 85 insertions, 2 deletions
diff --git a/app/assets/javascripts/security_configuration/components/app.vue b/app/assets/javascripts/security_configuration/components/app.vue index 6c70a8c33db..bc13150c99c 100644 --- a/app/assets/javascripts/security_configuration/components/app.vue +++ b/app/assets/javascripts/security_configuration/components/app.vue @@ -1,5 +1,5 @@ <script> -import { GlTab, GlTabs, GlSprintf, GlLink } from '@gitlab/ui'; +import { GlTab, GlTabs, GlSprintf, GlLink, GlAlert } from '@gitlab/ui'; import { __, s__ } from '~/locale'; import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue'; import UserCalloutDismisser from '~/vue_shared/components/user_callout_dismisser.vue'; @@ -31,6 +31,7 @@ export default { AutoDevOpsAlert, AutoDevOpsEnabledAlert, FeatureCard, + GlAlert, GlLink, GlSprintf, GlTab, @@ -79,6 +80,7 @@ export default { data() { return { autoDevopsEnabledAlertDismissedProjects: [], + errorMessage: '', }; }, computed: { @@ -106,6 +108,12 @@ export default { dismissedProjects.add(this.projectPath); this.autoDevopsEnabledAlertDismissedProjects = Array.from(dismissedProjects); }, + onError(message) { + this.errorMessage = message; + }, + dismissAlert() { + this.errorMessage = ''; + }, }, autoDevopsEnabledAlertStorageKey: AUTO_DEVOPS_ENABLED_ALERT_DISMISSED_STORAGE_KEY, }; @@ -113,6 +121,16 @@ export default { <template> <article> + <gl-alert + v-if="errorMessage" + sticky + class="gl-top-8 gl-z-index-1" + data-testid="manage-via-mr-error-alert" + variant="danger" + @dismiss="dismissAlert" + > + {{ errorMessage }} + </gl-alert> <local-storage-sync v-model="autoDevopsEnabledAlertDismissedProjects" :storage-key="$options.autoDevopsEnabledAlertStorageKey" @@ -174,6 +192,7 @@ export default { data-testid="security-testing-card" :feature="feature" class="gl-mb-6" + @error="onError" /> </template> </section-layout> @@ -207,6 +226,7 @@ export default { :key="feature.type" :feature="feature" class="gl-mb-6" + @error="onError" /> </template> </section-layout> diff --git a/app/assets/javascripts/security_configuration/components/constants.js b/app/assets/javascripts/security_configuration/components/constants.js index 6a282df99bf..9c80506549e 100644 --- a/app/assets/javascripts/security_configuration/components/constants.js +++ b/app/assets/javascripts/security_configuration/components/constants.js @@ -3,6 +3,7 @@ import { __, s__ } from '~/locale'; import { REPORT_TYPE_SAST, + REPORT_TYPE_SAST_IAC, REPORT_TYPE_DAST, REPORT_TYPE_DAST_PROFILES, REPORT_TYPE_SECRET_DETECTION, @@ -16,6 +17,7 @@ import { } from '~/vue_shared/security_reports/constants'; import configureSastMutation from '../graphql/configure_sast.mutation.graphql'; +import configureSastIacMutation from '../graphql/configure_iac.mutation.graphql'; import configureSecretDetectionMutation from '../graphql/configure_secret_detection.mutation.graphql'; /** @@ -30,6 +32,19 @@ export const SAST_CONFIG_HELP_PATH = helpPagePath('user/application_security/sas anchor: 'configuration', }); +export const SAST_IAC_NAME = __('Infrastructure as Code (IaC) Scanning'); +export const SAST_IAC_SHORT_NAME = s__('ciReport|IaC Scanning'); +export const SAST_IAC_DESCRIPTION = __( + 'Analyze your infrastructure as code configuration files for known vulnerabilities.', +); +export const SAST_IAC_HELP_PATH = helpPagePath('user/application_security/iac_scanning/index'); +export const SAST_IAC_CONFIG_HELP_PATH = helpPagePath( + 'user/application_security/iac_scanning/index', + { + anchor: 'configuration', + }, +); + export const DAST_NAME = __('Dynamic Application Security Testing (DAST)'); export const DAST_SHORT_NAME = s__('ciReport|DAST'); export const DAST_DESCRIPTION = __('Analyze a review version of your web application.'); @@ -141,6 +156,27 @@ export const securityFeatures = [ // https://gitlab.com/gitlab-org/gitlab/-/issues/331621 canEnableByMergeRequest: true, }, + ...(gon?.features?.configureIacScanningViaMr + ? [ + { + name: SAST_IAC_NAME, + shortName: SAST_IAC_SHORT_NAME, + description: SAST_IAC_DESCRIPTION, + helpPath: SAST_IAC_HELP_PATH, + configurationHelpPath: SAST_IAC_CONFIG_HELP_PATH, + type: REPORT_TYPE_SAST_IAC, + + // This field is currently hardcoded because SAST IaC is always available. + // It will eventually come from the Backend, the progress is tracked in + // https://gitlab.com/gitlab-org/gitlab/-/issues/331622 + available: true, + + // This field will eventually come from the backend, the progress is + // tracked in https://gitlab.com/gitlab-org/gitlab/-/issues/331621 + canEnableByMergeRequest: true, + }, + ] + : []), { name: DAST_NAME, shortName: DAST_SHORT_NAME, @@ -242,6 +278,21 @@ export const featureToMutationMap = { }, }), }, + ...(gon?.features?.configureIacScanningViaMr + ? { + [REPORT_TYPE_SAST_IAC]: { + mutationId: 'configureSastIac', + getMutationPayload: (projectPath) => ({ + mutation: configureSastIacMutation, + variables: { + input: { + projectPath, + }, + }, + }), + }, + } + : {}), [REPORT_TYPE_SECRET_DETECTION]: { mutationId: 'configureSecretDetection', getMutationPayload: (projectPath) => ({ diff --git a/app/assets/javascripts/security_configuration/components/feature_card.vue b/app/assets/javascripts/security_configuration/components/feature_card.vue index 86afdbfeb8c..33d72b54f86 100644 --- a/app/assets/javascripts/security_configuration/components/feature_card.vue +++ b/app/assets/javascripts/security_configuration/components/feature_card.vue @@ -66,6 +66,11 @@ export default { return Boolean(name && description && configurationText); }, }, + methods: { + onError(message) { + this.$emit('error', message); + }, + }, i18n: { enabled: s__('SecurityConfiguration|Enabled'), notEnabled: s__('SecurityConfiguration|Not enabled'), @@ -129,6 +134,7 @@ export default { category="primary" class="gl-mt-5" :data-qa-selector="`${feature.type}_mr_button`" + @error="onError" /> <gl-button diff --git a/app/assets/javascripts/security_configuration/graphql/configure_iac.mutation.graphql b/app/assets/javascripts/security_configuration/graphql/configure_iac.mutation.graphql new file mode 100644 index 00000000000..26b826ef722 --- /dev/null +++ b/app/assets/javascripts/security_configuration/graphql/configure_iac.mutation.graphql @@ -0,0 +1,6 @@ +mutation configureSastIac($input: ConfigureSastIacInput!) { + configureSastIac(input: $input) { + successPath + errors + } +} diff --git a/app/assets/javascripts/security_configuration/index.js b/app/assets/javascripts/security_configuration/index.js index 60d2c0d4e5a..a8623b468f2 100644 --- a/app/assets/javascripts/security_configuration/index.js +++ b/app/assets/javascripts/security_configuration/index.js @@ -14,7 +14,7 @@ export const initSecurityConfiguration = (el) => { Vue.use(VueApollo); const apolloProvider = new VueApollo({ - defaultClient: createDefaultClient({}, { assumeImmutableResults: true }), + defaultClient: createDefaultClient(), }); const { |