require 'rubygems'
require 'net/ldap'

class AuthBYU
def initialize
# Off-campus connections MUST be secure. On campus connection can be insecure
@ldap = Net::LDAP.new(:port => 636, :encryption => :simple_tls)
#ldap = Net::LDAP.new(:port => 389)
end

def login(routey_id, routey_password)
ldap.host = "ldap.byu.edu"
ldap.auth "uid=#{routey_id},ou=People,o=BYU.edu", routey_password
ldap.bind # true | false | throw timeout
end

def ry_login(*args)
login(*args)
end

def cs_login(cs_id,cs_password)
# Only works on-campus and only with insecure connections
ldap = Net::LDAP.new(:port => 389)
ldap.host = "ldap.cs.byu.edu"
ldap.auth "uid=#{cs_id},ou=people,dc=cs,dc=byu,dc=edu", cs_password
ldap.bind
end

def caedm_login(caedm_id, caedm_password)
# I can't find the info for this one
#ldap = Net::LDAP.new(:port => 389)
#ldap.host = "????.et.byu.edu"
#ldap.auth "uid=#{caedm_id},ou=accounts,ou=caedm,dc=et,dc=byu,dc=edu", caedm_password
#ldap.bind
false
end

private
attr_accessor :ldap
end

# Test by hand
puts "Username:"
username = gets.chomp
puts "Password (Visible):"
password = gets.chomp

b = AuthBYU.new
if b.login username, password
puts "Is good\n"
else
puts "Is not so good\n"
end

By AJ ONeal

If you loved this and want more like it, sign up!


Did I make your day?
Buy me a coffeeBuy me a coffee  

(you can learn about the bigger picture I'm working towards on my patreon page )