Sha256: 8a4fb0e862c9f276b3b857585deac9e7405b0507589e823625b8c3857475777a

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

if defined?(Rails)
  require 'switch_user/rails'
end

module SwitchUser
  require 'switch_user/data_source'
  autoload :UserSet, "switch_user/user_set"
  autoload :UserLoader, "switch_user/user_loader"
  autoload :Provider, "switch_user/provider"
  autoload :BaseGuard, "switch_user/base_guard"
  autoload :LambdaGuard, 'switch_user/lambda_guard'

  class InvalidScope < Exception; end

  mattr_accessor :provider
  mattr_accessor :available_users
  mattr_accessor :available_users_identifiers
  mattr_accessor :available_users_names
  mattr_accessor :redirect_path
  mattr_accessor :session_key
  mattr_accessor :helper_with_guest
  mattr_accessor :switch_back
  mattr_accessor :login_exclusive
  mattr_accessor :controller_guard
  mattr_accessor :view_guard
  mattr_reader   :guard_class

  def self.setup
    yield self
  end

  def self.available_scopes
    available_users.keys
  end

  def self.guard_class=(klass)
    @@guard_class = klass.constantize
  end

  def self.all_users
    data_sources.all
  end

  def self.data_sources
    sources = available_users.map do |scope, loader|
      identifier = available_users_identifiers.fetch(scope)
      name = available_users_names.fetch(scope)
      DataSource.new(loader, scope, identifier, name)
    end
    sources.unshift(GuestDataSource.new) if helper_with_guest
    DataSources.new(sources)
  end

  def self.reset_config
    self.provider = :devise
    self.available_users = { user: -> { User.all } }
    self.available_users_identifiers = { user: :id }
    self.available_users_names = { user: :email }
    self.guard_class = "SwitchUser::LambdaGuard"
    self.controller_guard = ->(current_user, request) { Rails.env.development? }
    self.view_guard = ->(current_user, request) { Rails.env.development? }
    self.redirect_path = ->(request, params) { request.env["HTTP_REFERER"] ? :back : root_path }
    self.session_key = :user_id
    self.helper_with_guest = true
    self.switch_back = false
    self.login_exclusive = true
  end

  reset_config
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
switch_user-1.5.0 lib/switch_user.rb