trabajo-afectivo/app/controllers/integration/ldap_controller.rb

66 lines
1.5 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
require 'ldap'
require 'ldap/user'
require 'ldap/group'
class Integration::LdapController < ApplicationController
include Integration::ImportJobBase
prepend_before_action { authentication_check(permission: 'admin.integration.ldap') }
def discover
ldap = ::Ldap.new(params)
render json: {
result: 'ok',
attributes: ldap.preferences,
}
rescue => e
# workaround for issue #1114
if e.message.end_with?(', 48, Inappropriate Authentication')
result = {
result: 'ok',
attributes: {},
}
else
logger.error e
result = {
result: 'failed',
message: e.message,
}
end
render json: result
end
def bind
# create single instance so
# User and Group don't have to
# open new connections
ldap = ::Ldap.new(params)
user = ::Ldap::User.new(params, ldap: ldap)
group = ::Ldap::Group.new(params, ldap: ldap)
render json: {
result: 'ok',
# the order of these calls is relevant!
user_filter: user.filter,
user_attributes: user.attributes,
user_uid: user.uid_attribute,
# the order of these calls is relevant!
group_filter: group.filter,
groups: group.list,
group_uid: group.uid_attribute,
}
rescue => e
logger.error e
render json: {
result: 'failed',
message: e.message,
}
end
end