Class: Readiness::TicketProcessor::TwoFARemoval
- Defined in:
- lib/support_readiness/ticket_processor/2fa_removal.rb
Overview
Defines the class TwoFARemoval within the module Zendesk.
Class Method Summary collapse
-
.owner_entitlement_check ⇒ Object
Determine if a owner driven request has entitlement.
-
.process!(zendesk_client, gitlab_admin_client, ticket_id) ⇒ Object
Process a 2FA Removal request.
-
.support_entitlement_check ⇒ Object
Determine if a request has support entitlement.
Methods inherited from Client
auth_error, bad_request_error, convert_actions, convert_conditions, convert_standard_names_to_ids, convert_ticket_form_agent_conditions, convert_ticket_form_brands, convert_ticket_form_end_user_conditions, convert_ticket_form_names_to_ids, convert_view_names_to_ids, convert_view_restrictions, covert_ticket_form_field_ids, create_package!, erb_renderer, handle_request_error, not_found_error, not_processible_error, put_into_archive, recursively_deflate_directory, timestamp_filename, to_clean_json, to_clean_json_with_key, to_hash, to_nearly_clean_json, to_nearly_clean_json_with_key, to_param_string, write_entries
Class Method Details
.owner_entitlement_check ⇒ Object
Determine if a owner driven request has entitlement
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/support_readiness/ticket_processor/2fa_removal.rb', line 81 def self.owner_entitlement_check return false unless support_entitlement_check zd_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Impacted email address', @ticket_fields) zd_requester = Readiness::Zendesk::Users.find!(@zendesk_client, @ticket.submitter_id) target_email = @ticket.custom_fields.detect { |t| t['id'] == zd_field.id }['value'] return false unless zd_requester.email.split('@').last.downcase == target_email.split('@').last.downcase users = Readiness::GitLab::Users.search_by_email(@gitlab_admin_client, target_email) return false unless users.count == 1 target = users.first users = Readiness::GitLab::Users.search_by_email(@gitlab_admin_client, zd_requester.email) return false unless users.count == 1 requester = users.first memberships = Readiness::GitLab::Users.memberships(@gitlab_admin_client, requester, ['type=Namespace']) namespaces_to_check = [] memberships.select { |m| m['access_level'] == 50 }.each do |m| namespace = Readiness::GitLab::Namespaces.find!(@gitlab_admin_client, m['source_id']) next unless namespace.parent_id.nil? next unless Readiness::GitLab::Namespaces.is_paid?(@gitlab_admin_client, namespace) namespaces_to_check.push(namespace) end return false if namespaces_to_check.count.zero? namespaces_to_check.each do |namespace| group = Readiness::GitLab::Groups.new({ 'id' => namespace.id }) all_members = Readiness::GitLab::Groups.all_members(@gitlab_admin_client, group, ["user_ids=#{target.id}"]) return true unless all_members.count.zero? end false end |
.process!(zendesk_client, gitlab_admin_client, ticket_id) ⇒ Object
Process a 2FA Removal request
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/support_readiness/ticket_processor/2fa_removal.rb', line 18 def self.process!(zendesk_client, gitlab_admin_client, ticket_id) @zendesk_client = zendesk_client @gitlab_admin_client = gitlab_admin_client @ticket = Readiness::Zendesk::Tickets.find!(@zendesk_client, ticket_id) @fields = Readiness::Zendesk::TicketFields.list(@zendesk_client) zd_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, '2FA removal target', @fields) if zd_field.nil? puts 'Cannot locate relevant zendesk ticket field, exiting for safety' exit 0 end ticket_field = @ticket.custom_fields.detect { |c| c['id'] == zd_field.id } if ticket_field.nil? puts 'Cannot locate relevant ticket field, exiting for safety' exit 0 end if ticket_field['value'] == '2fa_removal_self' = if support_entitlement_check %w[2fa_challenge_questions] else %w[2fa_user_not_entitled] end elsif ticket_field['value'] == '2fa_removal_other' = if owner_entitlement_check %w[2fa_snippet_verification] elsif support_entitlement_check %w[2fa_challenge_questions] else %w[2fa_owner_not_entitled] end else puts "Unknown request type of '#{ticket_field['value']}', exiting for safety" exit 0 end new_ticket = Readiness::Zendesk::Tickets.new new_ticket.id = @ticket.id new_ticket. = Readiness::Zendesk::Tickets.update_many!(@zendesk_client, [new_ticket]) end |
.support_entitlement_check ⇒ Object
Determine if a request has support entitlement
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/support_readiness/ticket_processor/2fa_removal.rb', line 62 def self.support_entitlement_check = %w[ sub_consumption_cicd_minutes sub_consumption_eap sub_consumption_storage sub_dotcom_premium sub_dotcom_ultimate ] .each do |t| return true if @ticket..include? t end false end |