add blank password check

This commit is contained in:
chiu 2025-01-03 08:46:53 +00:00
parent 3c44cc7782
commit 0b765697f1
1 changed files with 42 additions and 40 deletions

View File

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