Sha256: ac9079554c34e194d94506caa67810d4b61eb693df0c9641ba5dc9cf0c399267

Contents?: true

Size: 1.94 KB

Versions: 5

Compression:

Stored size: 1.94 KB

Contents

# -*- encoding : utf-8 -*-

class AddRecaptchaKeyAndAdminInfoCards < Card::CoreMigration
  def up
    create_recaptcha_settings
    Card::Cache.reset_all
    create_admin_cards
    update_machine_output
  end

  def create_admin_cards
    admin_only name: '*admin info',
               codename: 'admin_info'
    admin_only name: '*google_analytics_key',
               codename: 'google_analytics_key'

    codenames = %w(debugger recaptcha_settings)
    content =
      codenames.map do |cn|
        "[[#{Card[cn.to_sym].name}]]"
      end.join "\n"
    admin_only name: '*admin settings',
               codename: 'admin_settings',
               type_id: Card::PointerID,
               content: content
    add_admin_info_to_home_card
  end

  def add_admin_info_to_home_card
    return unless (home = Card[Card[:home].content])
    new_content = home.content.prepend "{{*admin info|content}}\n"
    home.update_attributes! content: new_content
  end

  def create_recaptcha_settings
    admin_only name: '*recaptcha settings',
               codename: :recaptcha_settings, type_id: Card::PointerID,
               content: "[[+public key]]\n" \
                        "[[+private key]]\n" \
                        '[[+proxy]]'
    Card::Cache.reset_all
    ['public_key', 'private_key', 'proxy'].each do |name|
      Card.create!(
        name: "#{Card[:recaptcha_settings].name}+#{name.tr('_', ' ')}",
        codename: "recaptcha_#{name}"
      )
    end
  end

  def admin_only args
    shared_args = { type_id: Card::PhraseID,
                    subcards: {
                      '+*self+*read' => { content: '[[Administrator]]' },
                      '+*self+*update' => { content: '[[Administrator]]' },
                      '+*self+*delete' => { content: '[[Administrator]]' }
                    }
                  }
    if args[:subcards]
      shared_args[:subcards].merge! args.delete(:subcards)
    end
    create_or_update shared_args.merge(args)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
card-1.17.4 db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb
card-1.17.3 db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb
card-1.17.2 db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb
card-1.17.1 db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb
card-1.17.0 db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb