Class: Entitlements::Backend::BaseProvider
- Inherits:
-
Object
- Object
- Entitlements::Backend::BaseProvider
- Includes:
- Contracts::Core
- Defined in:
- lib/entitlements/backend/base_provider.rb
Constant Summary collapse
- C =
::Contracts
Instance Method Summary collapse
- #diff(group, ignored_users = Set.new) ⇒ Object
- #diff_existing_updated(existing_group, group, ignored_users = Set.new) ⇒ Object
Instance Method Details
#diff(group, ignored_users = Set.new) ⇒ Object
19 20 21 22 |
# File 'lib/entitlements/backend/base_provider.rb', line 19 def diff(group, ignored_users = Set.new) existing_group = read(group.cn.downcase) return diff_existing_updated(existing_group, group, ignored_users) end |
#diff_existing_updated(existing_group, group, ignored_users = Set.new) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/entitlements/backend/base_provider.rb', line 31 def diff_existing_updated(existing_group, group, ignored_users = Set.new) # The comparison needs to be done case-insensitive because some backends (e.g. GitHub organizations or teams) # may report members with different capitalization than is used in Entitlements. Keep track of correct capitalization # of member names here so they can be applied later. Note that `group` (from Entitlements) overrides `existing_group` # (from the backend). member_with_correct_capitalization = existing_group.member_strings.map { |ms| [ms.downcase, ms] }.to_h member_with_correct_capitalization.merge! group.member_strings.map { |ms| [ms.downcase, ms] }.to_h existing_members = existing_group.member_strings.map { |u| u.downcase } Entitlements::Util::Util.remove_uids(existing_members, ignored_users) proposed_members = group.member_strings.map { |u| u.downcase } Entitlements::Util::Util.remove_uids(proposed_members, ignored_users) added_members = proposed_members - existing_members removed_members = existing_members - proposed_members { added: Set.new(added_members.map { |ms| member_with_correct_capitalization[ms] }), removed: Set.new(removed_members.map { |ms| member_with_correct_capitalization[ms] }) } end |