Sha256: 17d78613aaec0bc500e579a2688a2572eadd05ae2877b5b5e6dad9b5b0223e5d

Contents?: true

Size: 1.97 KB

Versions: 114

Compression:

Stored size: 1.97 KB

Contents

module Eco
  module API
    module Organization
      class LoginProviders <  Eco::Language::Models::Collection
        # build the shortcuts of Collection
        attr_collection :id, :name

        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

        def password_id
          to_id("password")
        end

        def active
          select {|lp| lp != "disabled"}
        end

        def any_optional?
          active.any? do |lp|
            lp.enabled_for = "some"
          end
        end

        def ids
          @by_id.keys
        end

        def names
          @by_name.keys
        end

        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

        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

        def login_provider(id_name)
          @by_id.fetch(login_provider_id(id_name), nil)
        end

        private

        def login_provider_name(id_name)
          (@by_id[id_name] || @by_name[id_name&.downcase])&.name&.downcase
        end

        def login_provider_id(id_name)
          (@by_name[id_name&.downcase] || @by_id[id_name])&.id
        end

        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

      end
    end
  end
end

Version data entries

114 entries across 114 versions & 1 rubygems

Version Path
eco-helpers-2.0.57 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.56 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.55 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.54 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.53 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.52 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.51 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.50 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.49 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.48 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.47 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.46 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.45 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.44 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.43 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.42 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.41 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.40 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.39 lib/eco/api/organization/login_providers.rb
eco-helpers-2.0.38 lib/eco/api/organization/login_providers.rb