Thanks Jason!  I ended up using net-ldap and just querying for
userAccountControl and comparing against this list:

http://www.netvision.com/ad_useraccountcontrol.php

def new_ldap_connection
  Net::LDAP.new(
      host: ENV['ad_host'],
      port: ENV['ad_port'],
      encryption: :simple_tls,
      base: ENV['ad_base'],
      auth: {
          method: :simple,
          username: ENV['ad_username'],
          password: ENV['ad_password'] })
end

def ldap_account_status(user)
  userAccountControl = new_ldap_connection().search(
      filter: Net::LDAP::Filter.eq('sAMAccountName', user.uniqname),
      attributes: %w[ userAccountControl ],
      return_result: true)

  if userAccountControl.nil? || userAccountControl.length == 0
    return 'no account'
  else
    case userAccountControl.first.userAccountControl.first
      when ('512' || '544' || '66048') then return 'enabled'
      when ('514' || '546' || '66050') then return 'disabled'
      else return 'unknown'
    end
  end
end

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/7d7196033208d829ab80e964742d5b25%40ruby-forum.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to