diff --git a/lib/ldap_login/login.rb b/lib/ldap_login/login.rb index 4645bf5..efdbe8b 100644 --- a/lib/ldap_login/login.rb +++ b/lib/ldap_login/login.rb @@ -10,51 +10,53 @@ module LdapLogin::Login _session = {'ad' => []} url = '/' url_method = 'redirect_to' - ldap_hosts.each do |ldap_host| - begin - ldap = Net::LDAP.new - ldap.host = ldap_host - ldap.port = 389 - ldap.auth "#{ldap_user}@asia.edu.tw", ldap_pass - if ldap.bind - if !user.nil? - #filter = Net::LDAP::Filter.eq( "sAMAccountName", ldap_user ) - #treebase = "ou=Asia Univ,dc=asia,dc=edu,dc=tws" - #puts "==LDAP SEARCH START==" - #ldap.search( :base => treebase, :filter => filter, :return_result => false ) do |entry| - # puts "DN: #{entry.dn}" - # entry.each do |attribute, values| - # puts " #{attribute}:" - # values.each do |value| - # puts " --->#{value}" - # end - # end - #end - puts "==LDAP SEARCH END==" - session[:user_id] = user.id - session[:login_referer] = nil - if params[:referer_url] - url = URI.parse(params[:referer_url]).path - url_method = 'redirect_to' + if !ldap_pass.blank? + ldap_hosts.each do |ldap_host| + begin + ldap = Net::LDAP.new + ldap.host = ldap_host + ldap.port = 389 + ldap.auth "#{ldap_user}@asia.edu.tw", ldap_pass + if ldap.bind + if !user.nil? + #filter = Net::LDAP::Filter.eq( "sAMAccountName", ldap_user ) + #treebase = "ou=Asia Univ,dc=asia,dc=edu,dc=tws" + #puts "==LDAP SEARCH START==" + #ldap.search( :base => treebase, :filter => filter, :return_result => false ) do |entry| + # puts "DN: #{entry.dn}" + # entry.each do |attribute, values| + # puts " #{attribute}:" + # values.each do |value| + # puts " --->#{value}" + # end + # end + #end + puts "==LDAP SEARCH END==" + session[:user_id] = user.id + session[:login_referer] = nil + if params[:referer_url] + url = URI.parse(params[:referer_url]).path + url_method = 'redirect_to' + else + url = admin_dashboards_path + url_method = 'redirect_to' + end + login_flag = true else - url = admin_dashboards_path - url_method = 'redirect_to' + error = I18n.t('devise.failure.ldap_pass_but_account_not_in_orbit') end - login_flag = true else - error = I18n.t('devise.failure.ldap_pass_but_account_not_in_orbit') + error = '驗證失敗,您輸入的使用者名稱或密碼不正確!' end - else - error = '驗證失敗,您輸入的使用者名稱或密碼不正確!' - end - break - rescue => e - if !e.class==Net::LDAP::ConnectionError - error = '發生不可預知的錯誤' - puts ['ldap',error,e] break - else - error = 'Could not connect to AD server.' + rescue => e + if !e.class==Net::LDAP::ConnectionError + error = '發生不可預知的錯誤' + puts ['ldap',error,e] + break + else + error = 'Could not connect to AD server.' + end end end end