class Eco::API::Organization::LoginProviders

Public Class Methods

new(login_providers = [], klass: Ecoportal::API::Internal::LoginProvider, factory: nil) click to toggle source
Calls superclass method Eco::Language::Models::Collection::new
# File lib/eco/api/organization/login_providers.rb, line 8
def initialize(login_providers = [], klass: Ecoportal::API::Internal::LoginProvider, factory: nil)
  @klass       = Ecoportal::API::Internal::LoginProvider
  @caches_init = false
  super(login_providers, klass: @klass)
  init_caches
end

Public Instance Methods

active() click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 19
def active
  select {|lp| lp != "disabled"}
end
any_optional?() click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 23
def any_optional?
  active.any? do |lp|
    lp.enabled_for = "some"
  end
end
ids() click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 29
def ids
  @by_id.keys
end
login_provider(id_name) click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 59
def login_provider(id_name)
  @by_id.fetch(login_provider_id(id_name), nil)
end
names() click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 33
def names
  @by_name.keys
end
password_id() click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 15
def password_id
  to_id("password")
end
to_id(name) click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 37
def to_id(name)
  case name
  when Enumerable
    name.map do |n|
      login_provider(n)&.id
    end.compact
  else
    login_provider(name)&.id
  end
end
to_name(id) click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 48
def to_name(id)
  case name
  when Enumerable
    id.map do |i|
      login_provider(i)&.name
    end.compact
  else
    login_provider(id)&.name
  end
end

Private Instance Methods

init_caches() click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 73
def init_caches
  return if @caches_init
  @by_id   = self.map { |pg| [pg.id, pg] }.to_h
  @by_name = self.map { |pg| [pg.name&.downcase, pg] }.to_h
  @caches_init = true
end
login_provider_id(id_name) click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 69
def login_provider_id(id_name)
  (@by_name[id_name&.downcase] || @by_id[id_name])&.id
end
login_provider_name(id_name) click to toggle source
# File lib/eco/api/organization/login_providers.rb, line 65
def login_provider_name(id_name)
  (@by_id[id_name] || @by_name[id_name&.downcase])&.name&.downcase
end