67 lines
2.4 KiB
Ruby
67 lines
2.4 KiB
Ruby
module LdapLogin::Login
|
|
def check_auth_with_ldap(login_uid,login_password)
|
|
ldap_filter = "(uid=#{login_uid})"
|
|
$nccu_ldap_connection.bind_as(:base => NccuLdapConnection::BASE,:filter => ldap_filter,:password=> login_password) rescue false
|
|
end
|
|
def ldap_login_auth(user,request,session,flash,params)
|
|
login_password = params[:password]
|
|
login_uid = params[:user_name]
|
|
result = false
|
|
ldap_filter = "(uid=#{login_uid})"
|
|
login_flag = false
|
|
NccuLdapConnection.establish
|
|
if ($nccu_ldap_connection.bind rescue false)
|
|
result = check_auth_with_ldap(login_uid,login_password)
|
|
resource = user
|
|
if result && login_password != ''
|
|
# set_flash_message(:notice, :signed_in) if is_navigational_format?
|
|
if (resource.nil?)
|
|
puts "===LDAP passed local block... resource:#{resource.inspect}\n login_uid:#{login_uid}"
|
|
flash.now.alert = t('devise.failure.ldap_pass_but_account_not_in_orbit')
|
|
url = "new"
|
|
url_method = 'render'
|
|
else
|
|
login_flag = true
|
|
session[:user_id] = resource.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
|
|
end
|
|
elsif !resource.nil?
|
|
if (resource.authenticate(login_password) && resource.is_confirmed?.eql?(true))
|
|
session[:user_id] = resource.id
|
|
session[:login_referer] = nil
|
|
login_flag = true
|
|
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
|
|
else
|
|
flash.now.alert = t('devise.failure.invalid')
|
|
url = "new"
|
|
url_method = 'render'
|
|
end
|
|
else
|
|
puts "==password LDAP fail..."
|
|
flash.now.alert = t('devise.failure.ldap_invalid')
|
|
url = "new"
|
|
url_method = 'render'
|
|
end
|
|
else
|
|
puts "=LDAP fail..."
|
|
flash.now.alert = t('devise.failure.ldap_connection_failed')
|
|
url = "new"
|
|
url_method = 'render'
|
|
end
|
|
[login_flag,session,flash,url,url_method]
|
|
end
|
|
end
|