Sha256: adbc6867b07903afe82be0874aef7adff2ee152e6934f86248a102cda670ca07

Contents?: true

Size: 1.95 KB

Versions: 3

Compression:

Stored size: 1.95 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)
      puts error
      @@error_notifier.call(error) unless @@error_notifier.blank?
    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
        raise Rails.logger.error("GDPR ERROR! please add is_admin_method to your gdpr initializer") if @@is_admin_method.blank?
        @@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

3 entries across 3 versions & 1 rubygems

Version Path
gdpr_rails-0.3.3 lib/policy_manager/config.rb
gdpr_rails-0.3.2 lib/policy_manager/config.rb
gdpr_rails-0.3.1 lib/policy_manager/config.rb