From d76e176fdcc668ca356eed743b64900a801a19d6 Mon Sep 17 00:00:00 2001 From: Sam Figueroa Date: Thu, 24 Aug 2023 16:32:53 +0200 Subject: [PATCH 01/16] Add SAML Auth for Approvals - The frontend needs to be aware of whether SAML auth for MR approvals is active and if so redirect directly to the SAML IdP for reauthentication. That request needs to have a custom callback defined after the user re-authenticats that will attempt to approve the MR again and then redirect to the MR(/show view). Doing it this way keeps some complexity out of the API controllers. - The return status of the MergeRequestApproval service was changed. Using ServiceResponse for consistency. - Add custom callback controller to handle IdP response - Cleanup: Remove superfluous represent_blocking_mr from MR widget entity. Last calling code was removed in 0465f0cf8d1061f6012febb1925fbbe82d5e16e6 - Refs: https://gitlab.com/groups/gitlab-org/-/epics/11084 https://gitlab.com/gitlab-org/gitlab/-/issues/421959 https://gitlab.com/gitlab-org/gitlab/-/issues/421961 Changelog: added EE: true --- .../components/approvals/approvals.vue | 20 ++++- .../stores/mr_widget_store.js | 2 + .../approve_with_saml_controller.rb | 54 +++++++++++++ ee/app/models/ee/project.rb | 11 +++ .../presenters/ee/merge_request_presenter.rb | 29 +++++++ .../ee/merge_request_widget_entity.rb | 10 ++- .../ee/merge_requests/approval_service.rb | 2 - .../merge_requests/saml_approval_service.rb | 43 +++++++++++ ee/config/routes/merge_requests.rb | 1 + .../resolver.rb | 15 +++- .../user_approves_with_saml_auth_spec.rb | 75 +++++++++++++++++++ ee/spec/frontend/fixtures/merge_requests.rb | 8 +- .../resolver_spec.rb | 28 ++++++- ee/spec/models/ee/project_spec.rb | 39 ++++++++++ .../merge_request_widget_entity_spec.rb | 8 ++ .../merge_requests/approval_service_spec.rb | 1 + locale/gitlab.pot | 15 ++++ spec/frontend/fixtures/merge_requests.rb | 8 +- .../components/approvals/approvals_spec.js | 60 +++++++++++++++ .../api/merge_request_approvals_spec.rb | 2 - 20 files changed, 418 insertions(+), 13 deletions(-) create mode 100644 ee/app/controllers/projects/merge_requests/approve_with_saml_controller.rb create mode 100644 ee/app/services/ee/merge_requests/saml_approval_service.rb create mode 100644 ee/spec/features/merge_request/user_approves_with_saml_auth_spec.rb diff --git a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue index a29393d9f93c44..1bcb7d026b9b4c 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue @@ -1,6 +1,7 @@