radiant-basic_page_auth-extension 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # Basic Page Auth
2
+
3
+ Protect a page's contents with HTTP Basic Authentication. The user, password, and realm are set up by adding the following Fields to a page:
4
+
5
+ User (required)
6
+ Password (required)
7
+ Realm (optional)
8
+
9
+ Realm defaults to the page slug. If set to "true" it will use Radiant::Config['site.title'], otherwise set your own value.
10
+
11
+
12
+ ## TODO
13
+
14
+ - Write some tests
15
+
16
+
17
+ ## Installation
18
+
19
+ This has only been tested on Radiant v1.0.0.rc2 +
20
+
21
+ Install as a gem :
22
+
23
+ ```
24
+ gem install radiant-basic_page_auth-extension
25
+ ```
26
+
27
+ Include the gem in your environment.rb :
28
+
29
+ ```
30
+ config.gem 'radiant-basic_page_auth-extension', :version => '~> 1.0.0'
31
+ ```
32
+
33
+ Run the update task :
34
+
35
+ ```
36
+ rake radiant:extensions:filter_toolbars:update
37
+ ```
data/Rakefile ADDED
@@ -0,0 +1,109 @@
1
+ # Determine where the RSpec plugin is by loading the boot
2
+ unless defined? RADIANT_ROOT
3
+ ENV["RAILS_ENV"] = "test"
4
+ case
5
+ when ENV["RADIANT_ENV_FILE"]
6
+ require File.dirname(ENV["RADIANT_ENV_FILE"]) + "/boot"
7
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
8
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../")}/config/boot"
9
+ else
10
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../")}/config/boot"
11
+ end
12
+ end
13
+
14
+ require 'rake'
15
+ require 'rake/rdoctask'
16
+ require 'rake/testtask'
17
+
18
+ rspec_base = File.expand_path(RADIANT_ROOT + '/vendor/plugins/rspec/lib')
19
+ $LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
20
+ require 'spec/rake/spectask'
21
+ require 'cucumber'
22
+ require 'cucumber/rake/task'
23
+
24
+ # Cleanup the RADIANT_ROOT constant so specs will load the environment
25
+ Object.send(:remove_const, :RADIANT_ROOT)
26
+
27
+ extension_root = File.expand_path(File.dirname(__FILE__))
28
+
29
+ task :default => [:spec, :features]
30
+ task :stats => "spec:statsetup"
31
+
32
+ desc "Run all specs in spec directory"
33
+ Spec::Rake::SpecTask.new(:spec) do |t|
34
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
35
+ t.spec_files = FileList['spec/**/*_spec.rb']
36
+ end
37
+
38
+ task :features => 'spec:integration'
39
+
40
+ namespace :spec do
41
+ desc "Run all specs in spec directory with RCov"
42
+ Spec::Rake::SpecTask.new(:rcov) do |t|
43
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
44
+ t.spec_files = FileList['spec/**/*_spec.rb']
45
+ t.rcov = true
46
+ t.rcov_opts = ['--exclude', 'spec', '--rails']
47
+ end
48
+
49
+ desc "Print Specdoc for all specs"
50
+ Spec::Rake::SpecTask.new(:doc) do |t|
51
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
52
+ t.spec_files = FileList['spec/**/*_spec.rb']
53
+ end
54
+
55
+ [:models, :controllers, :views, :helpers].each do |sub|
56
+ desc "Run the specs under spec/#{sub}"
57
+ Spec::Rake::SpecTask.new(sub) do |t|
58
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
59
+ t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
60
+ end
61
+ end
62
+
63
+ desc "Run the Cucumber features"
64
+ Cucumber::Rake::Task.new(:integration) do |t|
65
+ t.fork = true
66
+ t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
67
+ # t.feature_pattern = "#{extension_root}/features/**/*.feature"
68
+ t.profile = "default"
69
+ end
70
+
71
+ # Setup specs for stats
72
+ task :statsetup do
73
+ require 'code_statistics'
74
+ ::STATS_DIRECTORIES << %w(Model\ specs spec/models)
75
+ ::STATS_DIRECTORIES << %w(View\ specs spec/views)
76
+ ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers)
77
+ ::STATS_DIRECTORIES << %w(Helper\ specs spec/views)
78
+ ::CodeStatistics::TEST_TYPES << "Model specs"
79
+ ::CodeStatistics::TEST_TYPES << "View specs"
80
+ ::CodeStatistics::TEST_TYPES << "Controller specs"
81
+ ::CodeStatistics::TEST_TYPES << "Helper specs"
82
+ ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
83
+ end
84
+
85
+ namespace :db do
86
+ namespace :fixtures do
87
+ desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y"
88
+ task :load => :environment do
89
+ require 'active_record/fixtures'
90
+ ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
91
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'spec', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
92
+ Fixtures.create_fixtures('spec/fixtures', File.basename(fixture_file, '.*'))
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ desc 'Generate documentation for the basic_page_auth extension.'
100
+ Rake::RDocTask.new(:rdoc) do |rdoc|
101
+ rdoc.rdoc_dir = 'rdoc'
102
+ rdoc.title = 'BasicPageAuthExtension'
103
+ rdoc.options << '--line-numbers' << '--inline-source'
104
+ rdoc.rdoc_files.include('README')
105
+ rdoc.rdoc_files.include('lib/**/*.rb')
106
+ end
107
+
108
+ # Load any custom rakefiles for extension
109
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
@@ -0,0 +1,14 @@
1
+ require 'radiant-basic_page_auth-extension'
2
+ require 'radiant-basic_page_auth-extension/page'
3
+ require 'radiant-basic_page_auth-extension/site_controller'
4
+
5
+ class BasicPageAuthExtension < Radiant::Extension
6
+ version RadiantBasicPageAuthExtension::VERSION
7
+ description RadiantBasicPageAuthExtension::DESCRIPTION
8
+ url RadiantBasicPageAuthExtension::URL
9
+
10
+ def activate
11
+ Page.send :include, RadiantBasicPageAuthExtension::Page
12
+ SiteController.send :include, RadiantBasicPageAuthExtension::SiteController
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ module RadiantBasicPageAuthExtension
2
+ VERSION = '1.0.0'
3
+ SUMMARY = %q{HTTP Basic Authentication for Radiant CMS}
4
+ DESCRIPTION = %{Protect a page's contents with HTTP Basic Authentication.}
5
+ URL = "https://github.com/jsntv200/radiant-basic_page_auth-extension"
6
+ AUTHORS = ["Jason Taylor"]
7
+ EMAIL = ["jsntv200@gmail.com"]
8
+ end
@@ -0,0 +1,53 @@
1
+ module RadiantBasicPageAuthExtension
2
+ module Page
3
+ def self.included(base)
4
+ base.instance_eval {
5
+ include InstanceMethods
6
+ }
7
+ end
8
+
9
+ module InstanceMethods
10
+ def protected?
11
+ self.basic_auth_user && self.basic_auth_pass
12
+ end
13
+
14
+ def basic_auth_user
15
+ user = self.basic_auth_field('User')
16
+
17
+ if user && user.content.present?
18
+ user.content
19
+ end
20
+ end
21
+
22
+ def basic_auth_pass
23
+ pass = self.basic_auth_field('Password')
24
+
25
+ if pass && pass.content.present?
26
+ pass.content
27
+ end
28
+ end
29
+
30
+ def basic_auth_realm
31
+ realm = self.basic_auth_field('Realm')
32
+
33
+ if realm && realm.content.present?
34
+ realm = realm.content
35
+
36
+ if realm === 'true'
37
+ realm = Radiant::Config['site.title']
38
+ end
39
+
40
+ realm
41
+ else
42
+ realm = self.slug
43
+ end
44
+ end
45
+
46
+ def basic_auth_field(name)
47
+ self.fields.detect { |f| f.name.downcase == name.to_s.downcase }
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+
@@ -0,0 +1,33 @@
1
+ module RadiantBasicPageAuthExtension
2
+ module SiteController
3
+ def self.included(base)
4
+ base.class_eval {
5
+ include ClassMethods
6
+ alias_method_chain :process_page, :basic_auth
7
+ }
8
+ end
9
+
10
+ module ClassMethods
11
+ private
12
+
13
+ def process_page_with_basic_auth(page)
14
+ if page.protected?
15
+ if authenticate_with_http_basic { |u, p| u == page.basic_auth_user && p == page.basic_auth_pass }
16
+ page.instance_eval do
17
+ def cache?
18
+ false
19
+ end
20
+ end
21
+
22
+ process_page_without_basic_auth(page)
23
+ else
24
+ request_http_basic_authentication(page.basic_auth_realm)
25
+ end
26
+ else
27
+ process_page_without_basic_auth(page)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
@@ -0,0 +1,55 @@
1
+ namespace :radiant do
2
+ namespace :extensions do
3
+ namespace :basic_page_auth do
4
+
5
+ desc "Runs the migration of the Basic Page Auth extension"
6
+ task :migrate => :environment do
7
+ require 'radiant/extension_migrator'
8
+ if ENV["VERSION"]
9
+ BasicPageAuthExtension.migrator.migrate(ENV["VERSION"].to_i)
10
+ Rake::Task['db:schema:dump'].invoke
11
+ else
12
+ BasicPageAuthExtension.migrator.migrate
13
+ Rake::Task['db:schema:dump'].invoke
14
+ end
15
+ end
16
+
17
+ desc "Copies public assets of the Basic Page Auth to the instance public/ directory."
18
+ task :update => :environment do
19
+ is_svn_or_dir = proc {|path| path =~ /\.svn/ || File.directory?(path) }
20
+ puts "Copying assets from BasicPageAuthExtension"
21
+ Dir[BasicPageAuthExtension.root + "/public/**/*"].reject(&is_svn_or_dir).each do |file|
22
+ path = file.sub(BasicPageAuthExtension.root, '')
23
+ directory = File.dirname(path)
24
+ mkdir_p RAILS_ROOT + directory, :verbose => false
25
+ cp file, RAILS_ROOT + path, :verbose => false
26
+ end
27
+ unless BasicPageAuthExtension.root.starts_with? RAILS_ROOT # don't need to copy vendored tasks
28
+ puts "Copying rake tasks from BasicPageAuthExtension"
29
+ local_tasks_path = File.join(RAILS_ROOT, %w(lib tasks))
30
+ mkdir_p local_tasks_path, :verbose => false
31
+ Dir[File.join BasicPageAuthExtension.root, %w(lib tasks *.rake)].each do |file|
32
+ cp file, local_tasks_path, :verbose => false
33
+ end
34
+ end
35
+ end
36
+
37
+ desc "Syncs all available translations for this ext to the English ext master"
38
+ task :sync => :environment do
39
+ # The main translation root, basically where English is kept
40
+ language_root = BasicPageAuthExtension.root + "/config/locales"
41
+ words = TranslationSupport.get_translation_keys(language_root)
42
+
43
+ Dir["#{language_root}/*.yml"].each do |filename|
44
+ next if filename.match('_available_tags')
45
+ basename = File.basename(filename, '.yml')
46
+ puts "Syncing #{basename}"
47
+ (comments, other) = TranslationSupport.read_file(filename, basename)
48
+ words.each { |k,v| other[k] ||= words[k] } # Initializing hash variable as empty if it does not exist
49
+ other.delete_if { |k,v| !words[k] } # Remove if not defined in en.yml
50
+ TranslationSupport.write_file(filename, basename, comments, other)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "radiant-basic_page_auth-extension"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "radiant-basic_page_auth-extension"
7
+ s.version = RadiantBasicPageAuthExtension::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = RadiantBasicPageAuthExtension::AUTHORS
10
+ s.email = RadiantBasicPageAuthExtension::EMAIL
11
+ s.homepage = RadiantBasicPageAuthExtension::URL
12
+ s.summary = RadiantBasicPageAuthExtension::SUMMARY
13
+ s.description = RadiantBasicPageAuthExtension::DESCRIPTION
14
+
15
+ ignores = if File.exist?('.gitignore')
16
+ File.read('.gitignore').split("\n").inject([]) {|a,p| a + Dir[p] }
17
+ else
18
+ []
19
+ end
20
+ s.files = Dir['**/*'] - ignores
21
+ s.test_files = Dir['test/**/*','spec/**/*','features/**/*'] - ignores
22
+ s.require_paths = ["lib"]
23
+
24
+ s.post_install_message = %{
25
+ Add this to your radiant project with:
26
+ config.gem 'radiant-basic_page_auth-extension', :version => '~> #{RadiantBasicPageAuthExtension::VERSION}'
27
+ }
28
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format
3
+ progress
4
+ --loadby
5
+ mtime
6
+ --reverse
@@ -0,0 +1,36 @@
1
+ unless defined? RADIANT_ROOT
2
+ ENV["RAILS_ENV"] = "test"
3
+ case
4
+ when ENV["RADIANT_ENV_FILE"]
5
+ require ENV["RADIANT_ENV_FILE"]
6
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
7
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
8
+ else
9
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
10
+ end
11
+ end
12
+ require "#{RADIANT_ROOT}/spec/spec_helper"
13
+
14
+ Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
15
+
16
+ if File.directory?(File.dirname(__FILE__) + "/matchers")
17
+ Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
18
+ end
19
+
20
+ Spec::Runner.configure do |config|
21
+ # config.use_transactional_fixtures = true
22
+ # config.use_instantiated_fixtures = false
23
+ # config.fixture_path = RAILS_ROOT + '/spec/fixtures'
24
+
25
+ # You can declare fixtures for each behaviour like this:
26
+ # describe "...." do
27
+ # fixtures :table_a, :table_b
28
+ #
29
+ # Alternatively, if you prefer to declare them only once, you can
30
+ # do so here, like so ...
31
+ #
32
+ # config.global_fixtures = :table_a, :table_b
33
+ #
34
+ # If you declare global fixtures, be aware that they will be declared
35
+ # for all of your examples, even those that don't use them.
36
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: radiant-basic_page_auth-extension
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Jason Taylor
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-07-29 00:00:00 +10:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Protect a page's contents with HTTP Basic Authentication.
23
+ email:
24
+ - jsntv200@gmail.com
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - basic_page_auth_extension.rb
33
+ - lib/radiant-basic_page_auth-extension/page.rb
34
+ - lib/radiant-basic_page_auth-extension/site_controller.rb
35
+ - lib/radiant-basic_page_auth-extension.rb
36
+ - lib/tasks/basic_page_auth_extension_tasks.rake
37
+ - radiant-basic_page_auth-extension.gemspec
38
+ - Rakefile
39
+ - README.md
40
+ - spec/spec.opts
41
+ - spec/spec_helper.rb
42
+ has_rdoc: true
43
+ homepage: https://github.com/jsntv200/radiant-basic_page_auth-extension
44
+ licenses: []
45
+
46
+ post_install_message: "\n Add this to your radiant project with:\n config.gem 'radiant-basic_page_auth-extension', :version => '~> 1.0.0'\n "
47
+ rdoc_options: []
48
+
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ hash: 3
66
+ segments:
67
+ - 0
68
+ version: "0"
69
+ requirements: []
70
+
71
+ rubyforge_project:
72
+ rubygems_version: 1.5.0
73
+ signing_key:
74
+ specification_version: 3
75
+ summary: HTTP Basic Authentication for Radiant CMS
76
+ test_files:
77
+ - spec/spec.opts
78
+ - spec/spec_helper.rb