Skip to content

Instantly share code, notes, and snippets.

@Insood
Created November 7, 2018 01:31
Show Gist options
  • Save Insood/0e7503b2d4726267518b79f1718980ac to your computer and use it in GitHub Desktop.
Save Insood/0e7503b2d4726267518b79f1718980ac to your computer and use it in GitHub Desktop.
class ActiveDirectoryLookup
def self.find_users(filter)
base = "DC=lp,DC=local"
users = []
ldap_base.search(base: base, filter: filter) do |entry|
users << { name: entry[:name].first, login: entry[:sAMAccountName].first, mail: entry[:mail].first, title: entry[:title].first}
end
return users
end
def self.ad_users_by_role(role)
if role.filter then
return ActiveDirectoryLookup.find_users(role.filter)
else
filter = "(memberOf=#{role.dn})"
return ActiveDirectoryLookup.find_users(filter)
end
end
end
class User
[...]
def has_role?(role)
logins = self.logins.collect { |login| login.login.downcase}
roles = ActiveDirectoryLookup.ad_users_by_role(role).collect{ |user| user[:login].downcase }
(logins & roles).length > 0
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment