[Frontend] Scan profile drawer: view, create, edit and delete custom profiles
✅ Add the feature flagcustom_scan_profiles_uiin Add scan profile drawer to scanners overview (!252494 - merged) —config/feature_flags/wip/,type: wip,default_enabled: false,group: group::security controls. Everything in this issue sits behind it. Renamed fromcustom_secret_detection_profiles_uiin Rename the custom scan profiles feature flag (!255684 - merged)- Not
configurable_security_scan_profiles, which istype: beta,default_enabled: true, with rollout already complete
- Not
✅ Push permissions to the frontend in Expose scan profile permissions in GraphQL (!252340 - merged) —create_security_scan_profiles,update_security_scan_profilesanddelete_security_scan_profilesScanProfileTypeexposes nouserPermissions, so read them fromgroup.userPermissions- Disable each action's button when the user lacks its permission. Done in Add permission checks to scan profile create, e... (!259383 - merged)
- Reuse
scan_profiles/insufficient_permissions_popover.vueif necessary
✅ Drawer, opened from aManage profilesbutton next to a scanner in security configuration in Add scan profile drawer to scanners overview (!252494 - merged) (trigger button + empty drawer) and List scan profiles in the manage profiles drawer (!253432 - merged) (profile list + read-only detail pane)- Follow
security_attributes/attribute_drawer.vuefor the pattern, and the prototype for the layout: https://security-coverage-prototype-0b2bbb.gitlab.io/security-inventory-profiles/#/security-configuration
- Follow
✅ Edit mode, mutations and mapping util merged in Add create and edit mutations with profile layer (!253807 - merged), frontend form in Add edit flow for security scan profiles (!255995 - merged)- Permissions:
update_security_scan_profiles, gated in Add permission checks to scan profile create, e... (!259383 - merged) - Submitting the form calls
securityScanProfileUpdate - Hide for
gitlabRecommendedprofiles — the mutation refuses them triggersis a complete set: omitted triggers are destroyed, and a trigger sent without configuration loses its configuration. Rebuild the array from the fetchedtriggerSettings, and cover it with tests- No mutation writes configuration on its own:
securityScanProfileUpdateis the only one that can, and only throughtriggers. To change just the name or description, omittriggersentirely rather than restating it - No server-side defaults for Secret Detection, so render empty inputs with placeholders rather than prefilling
- Permissions:
✅ Create a blank profile in Add create flow for security scan profiles (!256222 - merged)- Permissions:
create_security_scan_profiles, gated in Add permission checks to scan profile create, e... (!259383 - merged) - Submitting the form calls
securityScanProfileCreatewith name, description, scan type and at least one trigger - Name uniqueness and
MAX_PROFILES_PER_NAMESPACE = 20are enforced on the backend — mirror them client-side for a faster error, but the server is the source of truth
- Permissions:
✅ Delete in Add delete flow for security scan profiles (!255710 - merged), with project count on the confirmation modal in Add project count to security scan profiles (!255822 - merged)- Permissions:
delete_security_scan_profiles, gated in Add permission checks to scan profile create, e... (!259383 - merged) - Confirming the dialog calls
securityScanProfileDelete, and the dialog names the attached projects - Hide for
gitlabRecommendedprofiles
- Permissions:
✅ Duplicate in Add duplicate action to scan profile drawer (!257589 - merged)- Permissions:
create_security_scan_profiles, gated in Add permission checks to scan profile create, e... (!259383 - merged) - Clicking
Duplicateopens the edit form pre-filled with the source profile's data (name, description, scan type, triggers) - Submitting the form calls
securityScanProfileCreatewith the modified data, creating a new profile - Name uniqueness enforced: form presents a distinct default name
- Shown for
gitlabRecommendedprofiles (duplicating to customize seems reasonable, unlike edit/delete)
- Permissions:
✅ SAST support in the scan profile mapping util and mutations in Add SAST support to scan profile mapping util a... (!255625 - merged), so the drawer can extend beyond Secret Detection✅ Search the profile list in Add search to security scan profile list (!256230 - merged)✅ Advanced configuration- Closed drafts exploring where it goes: Draft: Show advanced configuration in the profi... (!252986 - closed), Draft: Show advanced configuration in each trig... (!253278 - closed) and Draft: Show one advanced configuration per prof... (!253279 - closed)
- Variable modal and section header in Add advanced configuration variable modal and h... (!257354 - merged)
- Read-only view in the drawer in Add advanced configuration to profile drawer (!257984 - merged)
- SAST settings in the profile details modal in Show SAST settings in scan profile details (!257931 - merged)
- Variable catalog in Add the scan profile advanced configuration var... (!257505 - merged)
- Editable in the create and edit form in Make advanced configuration editable in the sca... (!258095 - merged)
- Fix enum-typed configuration values sent over GraphQL in Fix enum-typed scan profile configuration value... (!258343 - merged)
- Permissions: Add permission checks to scan profile create, e... (!259383 - merged)
- Variable table on each scan trigger card in Add a variable table to each scan trigger card ... (!258201 - merged)
- Stretch — open the read-only single-profile version of the drawer by clicking the profile name, which means making it a link in
scan_profiles/source_cell.vue
Edited by Miranda Fluharty