mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-16 16:16:43 +10:00
71 lines
1.3 KiB
Ruby
71 lines
1.3 KiB
Ruby
#-------------------------------------------------------------------
|
|
#
|
|
# Copyright (C) 2013 GitLab.com - Distributed under the MIT Expat License
|
|
#
|
|
#-------------------------------------------------------------------
|
|
|
|
module Gitlab
|
|
module LDAP
|
|
class Group
|
|
def self.find_by_cn(cn)
|
|
Gitlab::LDAP::Adapter.new.group(cn)
|
|
end
|
|
|
|
def initialize(entry)
|
|
@entry = entry
|
|
end
|
|
|
|
def cn
|
|
entry.cn.first
|
|
end
|
|
|
|
def name
|
|
cn
|
|
end
|
|
|
|
def path
|
|
name.parameterize
|
|
end
|
|
|
|
def memberuid?
|
|
entry.respond_to? :memberuid
|
|
end
|
|
|
|
def member_uids
|
|
entry.memberuid
|
|
end
|
|
|
|
def has_member?(user)
|
|
if memberuid?
|
|
member_uids.include?(user.uid)
|
|
else
|
|
member_dns.include?(user.dn)
|
|
end
|
|
end
|
|
|
|
def member_dns
|
|
if entry.respond_to? :member
|
|
entry.member
|
|
elsif entry.respond_to? :uniquemember
|
|
entry.uniquemember
|
|
elsif entry.respond_to? :memberof
|
|
entry.memberof
|
|
else
|
|
Rails.logger.warn("Could not find member DNs for LDAP group #{entry.inspect}")
|
|
[]
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def entry
|
|
@entry
|
|
end
|
|
|
|
def adapter
|
|
@adapter ||= Gitlab::LDAP::Adapter.new
|
|
end
|
|
end
|
|
end
|
|
end
|