action-guard 0.0.1 → 0.0.2

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 CHANGED
@@ -12,26 +12,91 @@ following design principles in mind:
12
12
  'fullpath' to the authorization which is then matched against a set of
13
13
  authorisation rules.
14
14
 
15
+ # Documentation
16
+
17
+ Documentation is work in progress. PLease this besides this readme, you
18
+ can read the
19
+ [specs](https://github.com/rwestgeest/action-guard/tree/master/spec)
20
+ and find the rdoc here:
21
+
22
+ http://rubydoc.info/gems/action-guard
23
+
15
24
  # Installing
16
25
 
26
+ gem install action-guard
27
+
28
+ or put action-guard in your Gemfile and
17
29
 
30
+ bundle install
18
31
 
19
- # Usage
32
+ # Getting started
20
33
 
21
- Assuming a Rails application you specify an initializer with the
22
- following content
34
+ Assuming a Rails application, you specify an initializer with the
35
+ following content:
23
36
 
37
+ ActionGuard.load_from_file(File.join(Rails.root, 'config', 'authorization.rules'))
24
38
 
39
+ and a file called authorization.rules in the config directory with
40
+ something like:
25
41
 
26
42
  role :god , 0
27
43
  role :admin, 1
28
44
  role :worker, 2
29
45
 
30
46
  allow '/'
31
- allow '/tracking', :at_least => :admin
47
+ allow '/tracking', :only_by => :admin
32
48
  allow '/maintenance', :at_least => :worker
33
49
  allow '/maintenance/[0-9]*/edit', :at_least => :admin
34
50
  allow '/maintenance/[0-9]*$', :at_least => :admin
35
51
 
52
+ and some model with a string typed attribute called 'role', in an
53
+ account or user model e.g.:
54
+
55
+ class Account
56
+ attr_reader :role
57
+ end
58
+
59
+ then in your (Application) controller you can
60
+
61
+ class ApplicationController < ActionController::Base
62
+ prepend_before_filter :authorize_action
63
+
64
+ protected
65
+ def authorized?(fullpath)
66
+ ActionGuard.authorized?(current_account, fullpath)
67
+ end
68
+ helper_method :authorized?
69
+
70
+ private
71
+ def authorize_action
72
+ unless authorized?(request.fullpath)
73
+ flash[:alert] = I18n.t("not_authorized")
74
+ sign_out current_account if current_account
75
+ redirect_to new_account_session_path
76
+ end
77
+ end
78
+ end
79
+
80
+ (In the example above, the path helpers, sign_out and current_account
81
+ methods are from [Devise]i(https://github.com/plataformatec/devise))
82
+
83
+ This is in essence all you need to get actionguard working. You could
84
+ also hide non authorized linkes by adding an authorized_link_to method
85
+ like so:
86
+
87
+ def authorized_link_to(what, path, options = {})
88
+ if (authorized?(path))
89
+ link_to(what, path, options)
90
+ end
91
+ end
92
+
93
+ or overwrite link_to
94
+
95
+ # Issues - bugs
96
+
97
+ If you find any issues in the code please let me know through:
98
+
99
+ https://github.com/rwestgeest/action-guard/issues
36
100
 
101
+ also consult that list for known issues in ActionGuard
37
102
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -0,0 +1,75 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{action-guard}
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Rob Westgeest"]
12
+ s.date = %q{2011-06-27}
13
+ s.description = %q{authorisation module of actions based on url-paths for usage in Rails and possibly other ruby based web frameworks}
14
+ s.email = %q{rob.westgeest@qwan.it}
15
+ s.extra_rdoc_files = [
16
+ "README.md"
17
+ ]
18
+ s.files = [
19
+ ".document",
20
+ ".gitignore",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.md",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "action-guard.gemspec",
29
+ "lib/action-guard.rb",
30
+ "lib/action-guard/base.rb",
31
+ "lib/action-guard/role.rb",
32
+ "lib/action-guard/rules.rb",
33
+ "lib/action-guard/syntax.rb",
34
+ "lib/action-guard/version.rb",
35
+ "script/authorization.rules",
36
+ "script/console",
37
+ "spec/action-guard_spec.rb",
38
+ "spec/spec_helper.rb"
39
+ ]
40
+ s.homepage = %q{http://github.com/rwestgeest/action-guard}
41
+ s.licenses = ["MIT"]
42
+ s.rdoc_options = ["--charset=UTF-8"]
43
+ s.require_paths = ["lib"]
44
+ s.rubygems_version = %q{1.3.7}
45
+ s.summary = %q{Action guard-0.0.2}
46
+
47
+ if s.respond_to? :specification_version then
48
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
49
+ s.specification_version = 3
50
+
51
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
+ s.add_development_dependency(%q<rspec>, ["~> 2.5.0"])
53
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
54
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
55
+ s.add_development_dependency(%q<rcov>, [">= 0"])
56
+ s.add_development_dependency(%q<ZenTest>, [">= 4.2.0"])
57
+ s.add_development_dependency(%q<rspec>, ["> 2.5.0"])
58
+ else
59
+ s.add_dependency(%q<rspec>, ["~> 2.5.0"])
60
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
61
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
62
+ s.add_dependency(%q<rcov>, [">= 0"])
63
+ s.add_dependency(%q<ZenTest>, [">= 4.2.0"])
64
+ s.add_dependency(%q<rspec>, ["> 2.5.0"])
65
+ end
66
+ else
67
+ s.add_dependency(%q<rspec>, ["~> 2.5.0"])
68
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
69
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
70
+ s.add_dependency(%q<rcov>, [">= 0"])
71
+ s.add_dependency(%q<ZenTest>, [">= 4.2.0"])
72
+ s.add_dependency(%q<rspec>, ["> 2.5.0"])
73
+ end
74
+ end
75
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action-guard
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Rob Westgeest
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-26 00:00:00 +02:00
18
+ date: 2011-06-27 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -130,7 +130,7 @@ files:
130
130
  - README.md
131
131
  - Rakefile
132
132
  - VERSION
133
- - action_guard.gemspec
133
+ - action-guard.gemspec
134
134
  - lib/action-guard.rb
135
135
  - lib/action-guard/base.rb
136
136
  - lib/action-guard/role.rb
@@ -174,6 +174,6 @@ rubyforge_project:
174
174
  rubygems_version: 1.3.7
175
175
  signing_key:
176
176
  specification_version: 3
177
- summary: Action guard-0.0.1
177
+ summary: Action guard-0.0.2
178
178
  test_files: []
179
179
 
@@ -1,24 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
- require "action_guard/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "action_guard"
7
- s.version = ActionGuard::Version::STRING
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = ["Rob Westgeest"]
10
- s.email = "rob.westgeest@gmail.com"
11
- s.homepage = "http://github.com/actionguard"
12
- s.summary = "actionguard-#{ActionGuard::Version::STRING}"
13
- s.description = "authorisation of actions based on url-paths"
14
-
15
- s.rubygems_version = "1.3.7"
16
- s.rubyforge_project = "actionguard"
17
-
18
- s.files = `git ls-files`.split("\n")
19
- s.test_files = `git ls-files -- {spec}/*`.split("\n")
20
- s.extra_rdoc_files = [ "README.md" ]
21
- s.rdoc_options = ["--charset=UTF-8"]
22
- s.require_path = "lib"
23
- end
24
-