Sha256: 4f205a14d47210e78d930593f7c1bdb593e59c9944beaf3ce2e55943bc69eb97

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module Kadmin
  module Auth
    class UserStore
      def initialize
        @store = {}
        load_users!
      end

      def get(email)
        return @store[email.to_s.downcase]
      end

      def set(email, user)
        @store[email.to_s.downcase] = user
      end

      def exists?(email)
        @store.key?(email.to_s.downcase)
      end

      def load_users!
        file = Rails.root.join('config', 'admin_users.yml')
        if File.exist?(file) && File.readable?(file)
          definitions = YAML.load_file(file.to_s)
          definitions.each do |definition|
            email = definition['email']
            options = {
              admin: definition.fetch('admin', false),
              accept: Array.wrap(definition.fetch('accept', [])).map(&:to_sym),
              organization: definition.fetch('organization', 'offerista') # default organization, needs to exist in DB
            }

            set(email, Kadmin::Auth.config.user_class.new(email, **options))
          end
        else
          Rails.logger.warn("Can't read admin users auth file at #{file}. Auth might not work")
        end
      end
      private :load_users!
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kadmin-1.0.3 lib/kadmin/auth/user_store.rb