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
memberanduniqueMemberentries. -
#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 |