app/controllers/zuora_connect/application_controller.rb



module ZuoraConnect
  class ApplicationController < ActionController::Base
    protect_from_forgery with: :exception
    before_action :authenticate_connect_app_request, except: [:ldap_login]
    after_action :persist_connect_app_session, except: [:ldap_login]

    def ldap_login
      require 'net-ldap'

      username = request.parameters['ldap_username']
      password = request.parameters['ldap_password']

      begin
        if ZuoraConnect::LDAP::Adapter.valid_credentials?(username, password)
          id = ZuoraConnect::AppInstance.first.id
          session["appInstance"] = ZuoraConnect::AppInstance.first.id
          session["#{id}::admin"] = true
          respond_to do |format|
            format.html { redirect_to '/admin/app_instances' }
          end
        else
          render 'zuora_connect/application/ldap_login', locals: {
            title: 'LDAP Authentication Failed',
            message: 'Invalid username or password'
          }, :layout => false
        end
      rescue Net::LDAP::Error
        render 'zuora_connect/application/ldap_login', locals: {
          title: 'LDAP Authentication Net Error',
          message: 'Failed to connect to server while authenticating the LDAP credentials. Please retry later.'
        }, :layout => false
      end
    end
  end
end