Sha256: 9bc4b789dc34cec5a4c5246b9dcd404e9e2846b106c011abac4afb2faf917c60

Contents?: true

Size: 1.78 KB

Versions: 2

Compression:

Stored size: 1.78 KB

Contents

module PolicyManager
  class Config

    mattr_accessor :exporter,
                   :from_email,
                   :is_admin_method,
                   :logout_url,
                   :user_language_method,
                   :scripts,
                   :admin_email_inbox,
                   :error_notifier,
                   :user_resource,
                   :admin_user_resource

    def self.setup
      @@rules = []
      @@portability_rules = []
      @@portability_templates = []
      @@scripts = []

      yield self

      # sets this defaults after configuration
      @@user_resource ||= User
      @@admin_user_resource ||= User

      self
    end

    def self.error_notifier_method(error)
      @@error_notifier.call(error)
    end

    def self.admin_email(user)
      @@admin_email_inbox.is_a?(Proc) ? @@admin_email_inbox.call(user) : @@admin_email_inbox
    end

    def self.exporter=(opts)
      @@exporter = Exporter.new(opts)
    end

    def self.is_admin?(user)
      if has_different_admin_user_resource?
        user.is_a? admin_user_resource
      else
        @@is_admin_method.call(user)
      end
    end

    def self.has_different_admin_user_resource?
      user_resource != admin_user_resource
    end

    def self.user_language(user)
      @@user_language_method.call(user) rescue :en
    end

    def self.rules
      @@rules ||= []
    end

    def self.portability_rules
      @@portability_rules ||= []
    end

    def self.add_rule(opts={}, &block)
      @@rules << PolicyManager::Rule.new(opts, &block)
    end

    def self.add_portability_rule(opts={}, &block)
      @@portability_rules << PolicyManager::PortabilityRule.new(opts, &block)
    end

    def self.add_script(opts={}, &block)
      @@scripts << PolicyManager::Script.new(opts, &block)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gdpr_rails-0.2.4 lib/policy_manager/config.rb
gdpr_rails-0.2.2 lib/policy_manager/config.rb