Class: GitHub::Ldap::PosixGroup
- Defined in:
- lib/github/ldap/posix_group.rb
Overview
This class represents a POSIX group.
To get a POSIX group, you’ll need to create a ‘Ldap` object and then call the method `group`. The parameter for `group` must be a dn to a group entry with `posixGroup` amongs the values for the attribute `objectClass`.
For example:
domain = GitHub::Ldap.new(options).group(“cn=enterprise,dc=github,dc=com”)
Constant Summary
Constants inherited from Group
Constants included from Filter
Filter::ALL_GROUPS_FILTER, Filter::MEMBERSHIP_NAMES
Instance Attribute Summary
Attributes inherited from Group
Class Method Summary collapse
-
.valid?(entry) ⇒ Boolean
Public - Check if an ldap entry is a valid posixGroup.
Instance Method Summary collapse
-
#combined_group? ⇒ Boolean
Internal - Check if this posix group also includes ‘member` and `uniqueMember` entries.
-
#is_member?(user_entry) ⇒ Boolean
Public - Overrides Group#is_member?.
-
#members ⇒ Object
Public - Overrides Group#members.
-
#search_members_by_uids ⇒ Object
Internal - Search all members by uid.
-
#subgroups ⇒ Object
Public - Overrides Group#subgroups.
Methods inherited from Group
#group?, group?, #group_and_member_entries, #groups_and_members, #initialize, #load_cache, #loop_cached_groups, #member_entries, #member_names
Methods included from Filter
#all_members_by_uid, #group_contains_filter, #group_filter, #login_filter, #member_filter, #members_of_group, #posix_member_filter, #subgroups_of_group
Constructor Details
This class inherits a constructor from GitHub::Ldap::Group
Class Method Details
.valid?(entry) ⇒ Boolean
Public - Check if an ldap entry is a valid posixGroup.
entry: is the ldap entry to check.
Returns true if the entry includes the objectClass ‘posixGroup`.
18 19 20 |
# File 'lib/github/ldap/posix_group.rb', line 18 def self.valid?(entry) entry[:objectClass].any? {|oc| oc.downcase == 'posixgroup'} end |
Instance Method Details
#combined_group? ⇒ Boolean
Internal - Check if this posix group also includes ‘member` and `uniqueMember` entries.
Returns true if any of the membership names is include in this group entry.
65 66 67 |
# File 'lib/github/ldap/posix_group.rb', line 65 def combined_group? MEMBERSHIP_NAMES.any? {|name| !entry[name].empty? } end |
#is_member?(user_entry) ⇒ Boolean
Public - Overrides Group#is_member?
Chech if the user entry uid exists in the collection of ‘memberUid`. It calls `super` if the group entry includes `member` or `uniqueMember`.
Return true if the user is member if this group or any subgroup.
55 56 57 58 59 60 |
# File 'lib/github/ldap/posix_group.rb', line 55 def is_member?(user_entry) entry_uids = user_entry[ldap.uid] return true if !(entry_uids & entry[:memberUid]).empty? super if combined_group? end |
#members ⇒ Object
Public - Overrides Group#members
Search the entries corresponding to the members in the ‘memberUid` attribute. It calls `super` if the group entry includes `member` or `uniqueMember`.
Returns an array with the members of this group and its submembers if there is any.
28 29 30 31 32 33 34 35 36 |
# File 'lib/github/ldap/posix_group.rb', line 28 def members return @all_posix_members if @all_posix_members @all_posix_members = search_members_by_uids @all_posix_members.concat super if combined_group? @all_posix_members.uniq! {|m| m.dn } @all_posix_members end |
#search_members_by_uids ⇒ Object
Internal - Search all members by uid.
Return an array of user entries.
72 73 74 75 76 77 78 |
# File 'lib/github/ldap/posix_group.rb', line 72 def search_members_by_uids member_uids = entry[:memberUid] return [] if member_uids.empty? filter = all_members_by_uid(member_uids, ldap.uid) ldap.search(filter: filter) end |
#subgroups ⇒ Object
Public - Overrides Group#subgroups
Prevent to call super when the group entry does not include ‘member` or `uniqueMember`.
Returns an array with the subgroups of this group.
43 44 45 46 47 |
# File 'lib/github/ldap/posix_group.rb', line 43 def subgroups return [] unless combined_group? super end |