ldap_groups.patch
| src/authm_mad/remotes/ldap/authenticate | ||
|---|---|---|
| 68 | 68 |
begin |
| 69 | 69 |
ldap=OpenNebula::LdapAuth.new(server_conf) |
| 70 | 70 | |
| 71 |
user_name=ldap.find_user(user) |
|
| 71 |
user_name, user_group=ldap.find_user(user)
|
|
| 72 | 72 | |
| 73 | 73 |
if !user_name |
| 74 | 74 |
STDERR.puts "User #{user} not found"
|
| ... | ... | |
| 76 | 76 |
end |
| 77 | 77 | |
| 78 | 78 |
if server_conf[:group] |
| 79 |
if !ldap.is_in_group?(user_name, server_conf[:group]) |
|
| 80 |
STDERR.puts "User #{user} is not in group #{server_conf[:group]}"
|
|
| 79 |
group=server_conf[:group] |
|
| 80 |
if (server_conf[:user_group_field] && group!=user_group) || |
|
| 81 |
!ldap.is_in_group?(user_name, group) |
|
| 82 |
STDERR.puts "User #{user} is not in group #{group}"
|
|
| 81 | 83 |
next |
| 82 | 84 |
end |
| 83 | 85 |
end |
| src/authm_mad/remotes/ldap/ldap_auth.rb | ||
|---|---|---|
| 56 | 56 |
:filter => "#{@options[:user_field]}=#{name}")
|
| 57 | 57 | |
| 58 | 58 |
if result && result.first |
| 59 |
result.first.dn |
|
| 59 |
n=result.first.dn |
|
| 60 |
if @options[:user_group_field] |
|
| 61 |
g=result.first[:user_group_field] |
|
| 62 |
else |
|
| 63 |
g=nil |
|
| 64 |
end |
|
| 65 |
[n, g] |
|
| 60 | 66 |
else |
| 61 | 67 |
result=@ldap.search(:base => name) |
| 62 | 68 | |
| 63 | 69 |
if result && result.first |
| 64 |
name |
|
| 70 |
if @options[:user_group_field] |
|
| 71 |
g=result.first[:user_group_field] |
|
| 72 |
else |
|
| 73 |
g=nil |
|
| 74 |
end |
|
| 75 |
[name, g] |
|
| 65 | 76 |
else |
| 66 |
nil
|
|
| 77 |
[nil, nil]
|
|
| 67 | 78 |
end |
| 68 | 79 |
end |
| 69 | 80 |
rescue |
| 70 |
nil
|
|
| 81 |
[nil, nil]
|
|
| 71 | 82 |
end |
| 72 | 83 |
end |
| 73 | 84 | |