diff --git a/ee/config/feature_flags/gitlab_com_derisk/members_api_expose_enterprise_users_emails_only.yml b/ee/config/feature_flags/gitlab_com_derisk/members_api_expose_enterprise_users_emails_only.yml deleted file mode 100644 index a80510a18540ea0c86c4d8ea8221125d162572fe..0000000000000000000000000000000000000000 --- a/ee/config/feature_flags/gitlab_com_derisk/members_api_expose_enterprise_users_emails_only.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -name: members_api_expose_enterprise_users_emails_only -feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/391453 -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135873 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/439044 -milestone: '16.9' -group: group::authentication -type: gitlab_com_derisk -default_enabled: false diff --git a/ee/lib/ee/api/entities/member.rb b/ee/lib/ee/api/entities/member.rb index 9353a9396f501e9a6bf435349b22433ecdb3f608..5320008ea11a4b8af59221f47c79a276a747f009 100644 --- a/ee/lib/ee/api/entities/member.rb +++ b/ee/lib/ee/api/entities/member.rb @@ -15,11 +15,7 @@ module Member expose( :email, if: ->(member, options) { - options[:current_user]&.can_admin_all_resources? || member.user&.managed_by_user?(options[:current_user], group: member.source&.root_ancestor) || - ( - ::Feature.disabled?(:members_api_expose_enterprise_users_emails_only, type: :gitlab_com_derisk) && - Ability.allowed?(options[:current_user], :admin_group_member, member.user&.provisioned_by_group) - ) + options[:current_user]&.can_admin_all_resources? || member.user&.managed_by_user?(options[:current_user], group: member.source&.root_ancestor) } ) do |member, _options| member.user&.email diff --git a/ee/lib/ee/api/helpers/members_helpers.rb b/ee/lib/ee/api/helpers/members_helpers.rb index ef2ab07c250fc772b655ec68fb5597ff0d22b9b5..37c12d41e03f6563ab9ca7589626675a3e2074e0 100644 --- a/ee/lib/ee/api/helpers/members_helpers.rb +++ b/ee/lib/ee/api/helpers/members_helpers.rb @@ -43,11 +43,7 @@ def member_access_levels override :retrieve_members def retrieve_members(source, params:, deep: false) members = super - members = if ::Feature.enabled?(:members_api_expose_enterprise_users_emails_only, type: :gitlab_com_derisk) - members.includes(user: [:user_highest_role, :user_detail]) - else - members.includes(user: [:user_highest_role, { user_detail: :provisioned_by_group }]) - end + members = members.includes(user: [:user_highest_role, :user_detail]) if can_view_group_identity?(source) members = members.includes(user: :group_saml_identities) diff --git a/ee/spec/lib/ee/api/entities/member_spec.rb b/ee/spec/lib/ee/api/entities/member_spec.rb index b8a39a1e6909efff34dae7e29b4babb537e303b1..99b8df4cb1fa30c182d0595e825fa9407ae983a5 100644 --- a/ee/spec/lib/ee/api/entities/member_spec.rb +++ b/ee/spec/lib/ee/api/entities/member_spec.rb @@ -203,28 +203,6 @@ end end end - - context 'when members_api_expose_enterprise_users_emails_only FF is disabled' do - before do - stub_feature_flags(members_api_expose_enterprise_users_emails_only: false) - end - - context 'when the current_user is a group owner' do - before do - create(:group_member, :owner, user: current_user, group: group) - end - - include_examples "does not expose the user's email" - - context 'when member user is provisioned by the group' do - before do - member.user.provisioned_by_group = group - end - - include_examples "exposes the user's email" - end - end - end end context 'with state' do diff --git a/ee/spec/requests/api/members_spec.rb b/ee/spec/requests/api/members_spec.rb index 34b7850450a285803367a6141a1a92946fae13f1..97fcec2df4d738b9056ddde57245f0bf6847019d 100644 --- a/ee/spec/requests/api/members_spec.rb +++ b/ee/spec/requests/api/members_spec.rb @@ -33,30 +33,6 @@ expect(subject.map { |u| u['id'] }).not_to include(minimal_access_member.user_id) end - - context 'when members_api_expose_enterprise_users_emails_only FF is disabled' do - before do - stub_feature_flags(members_api_expose_enterprise_users_emails_only: false) - end - - context 'when the current_user is a group owner' do - let_it_be(:member) { create(:group_member, :owner, group: group) } - - it_behaves_like 'members response with hidden email' do - let(:email) { member.user.email } - end - - context 'when member user is provisioned by the group' do - before do - member.user.update!(provisioned_by_group: group) - end - - it_behaves_like 'members response with exposed email' do - let(:email) { member.user.email } - end - end - end - end end describe 'POST /groups/:id/members' do