1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # 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
|