HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vmi1674223.contaboserver.net 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64
User: root (0)
PHP: 7.4.3-4ubuntu2.22
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/openproject/app/models/dummy_auth_source.rb
class DummyAuthSource < AuthSource
  def test_connection
    # the dummy connection is always available
  end

  def authenticate(login, password)
    existing_user(login, password) || on_the_fly_user(login)
  end

  def find_user(login)
    find_registered_user(login) || find_on_the_fly_user(login)
  end

  def auth_method_name
    'LDAP'
  end

  private

  def find_registered_user(login)
    registered_login?(login) &&
      User
        .find_by(login: login)
        .attributes
        .slice("firstname", "lastname", "mail")
        .merge(auth_source_id: id)
  end

  def find_on_the_fly_user(login)
    dummy_login?(login) && on_the_fly_user(login)
  end

  def dummy_login?(login)
    login.start_with? "dummy_"
  end

  def existing_user(login, password)
    registered_login?(login) && password == 'dummy' && find_registered_user(login)
  end

  def on_the_fly_user(login)
    return nil unless onthefly_register?

    {
      firstname: login.capitalize,
      lastname: 'Dummy',
      mail: 'login@DerpLAP.net',
      auth_source_id: id
    }
  end

  def registered_login?(login)
    not users.where(login: login).empty? # empty? to use EXISTS query
  end

  # Does this auth source backend allow password changes?
  def self.allow_password_changes?
    false
  end
end