omniauth_callbacks_controller.rb 750 Bytes
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
 
  def ldap
    # We only find ourselves here if the authentication to LDAP was successful.
    ldap = request.env["omniauth.auth"]["extra"]["raw_info"]
    username = ldap.sAMAccountName[0].to_s
    email = ldap.proxyaddresses[0][5..-1].to_s
 
    if @user = User.find_by_email(email)
        sign_in_and_redirect root_path
    else
      password = User.generate_random_password
        @user = User.create(:name => username,
                            :email => email,
                            :password => password,
                            :password_confirmation => password
                           )
        sign_in_and_redirect @user
    end
  end

end