aegis 1.1.4 → 1.1.5
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.rdoc +7 -0
- data/VERSION +1 -1
- data/aegis.gemspec +13 -3
- data/lib/aegis/has_role.rb +28 -7
- data/lib/aegis/permissions.rb +2 -3
- data/test/app_root/app/models/old_soldier.rb +6 -0
- data/test/app_root/app/models/soldier.rb +1 -1
- data/test/app_root/app/models/trust_fund_kid.rb +5 -0
- data/test/app_root/app/models/veteran_soldier.rb +6 -0
- data/test/app_root/db/migrate/20090408115228_create_users.rb +1 -1
- data/test/app_root/db/migrate/20090429075648_create_soldiers.rb +0 -2
- data/test/app_root/db/migrate/20091110075648_create_veteran_soldiers.rb +14 -0
- data/test/app_root/db/migrate/20091110075649_create_trust_fund_kids.rb +15 -0
- data/test/has_role_options_test.rb +34 -2
- data/test/has_role_test.rb +4 -4
- metadata +12 -2
data/README.rdoc
CHANGED
@@ -89,6 +89,13 @@ Aegis assumes that the corresponding database table has a string-valued column
|
|
89
89
|
called +role_name+. You may override the name with the <tt>:name_accessor =>
|
90
90
|
:my_role_column</tt> option.
|
91
91
|
|
92
|
+
You can define a default role for a model by saying
|
93
|
+
class User < ActiveRecord::Base
|
94
|
+
has_role :default => :admin
|
95
|
+
end
|
96
|
+
All this will do, is initialize the +role_name+ with the given default when
|
97
|
+
+User.new+ is called.
|
98
|
+
|
92
99
|
The roles and permissions themselves are defined in a class inheriting from
|
93
100
|
<b>Aegis::Permissions</b>. To define roles you create a model <tt>permissions.rb</tt>
|
94
101
|
and use the *role* method:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.5
|
data/aegis.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{aegis}
|
5
|
-
s.version = "1.1.
|
5
|
+
s.version = "1.1.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Henning Koch"]
|
9
|
-
s.date = %q{2009-11-
|
9
|
+
s.date = %q{2009-11-11}
|
10
10
|
s.description = %q{Aegis is a role-based permission system, where all users are given a role. It is possible to define detailed and complex permissions for each role very easily.}
|
11
11
|
s.email = %q{github@makandra.de}
|
12
12
|
s.extra_rdoc_files = [
|
@@ -29,10 +29,13 @@ Gem::Specification.new do |s|
|
|
29
29
|
"lib/aegis/role.rb",
|
30
30
|
"lib/rails/active_record.rb",
|
31
31
|
"test/app_root/app/controllers/application_controller.rb",
|
32
|
+
"test/app_root/app/models/old_soldier.rb",
|
32
33
|
"test/app_root/app/models/permissions.rb",
|
33
34
|
"test/app_root/app/models/soldier.rb",
|
35
|
+
"test/app_root/app/models/trust_fund_kid.rb",
|
34
36
|
"test/app_root/app/models/user.rb",
|
35
37
|
"test/app_root/app/models/user_subclass.rb",
|
38
|
+
"test/app_root/app/models/veteran_soldier.rb",
|
36
39
|
"test/app_root/config/boot.rb",
|
37
40
|
"test/app_root/config/database.yml",
|
38
41
|
"test/app_root/config/environment.rb",
|
@@ -44,6 +47,8 @@ Gem::Specification.new do |s|
|
|
44
47
|
"test/app_root/config/routes.rb",
|
45
48
|
"test/app_root/db/migrate/20090408115228_create_users.rb",
|
46
49
|
"test/app_root/db/migrate/20090429075648_create_soldiers.rb",
|
50
|
+
"test/app_root/db/migrate/20091110075648_create_veteran_soldiers.rb",
|
51
|
+
"test/app_root/db/migrate/20091110075649_create_trust_fund_kids.rb",
|
47
52
|
"test/app_root/lib/console_with_fixtures.rb",
|
48
53
|
"test/app_root/log/.gitignore",
|
49
54
|
"test/app_root/script/console",
|
@@ -59,9 +64,12 @@ Gem::Specification.new do |s|
|
|
59
64
|
s.rubygems_version = %q{1.3.5}
|
60
65
|
s.summary = %q{Role-based permissions for your user models.}
|
61
66
|
s.test_files = [
|
62
|
-
"test/app_root/app/models/
|
67
|
+
"test/app_root/app/models/trust_fund_kid.rb",
|
68
|
+
"test/app_root/app/models/veteran_soldier.rb",
|
69
|
+
"test/app_root/app/models/permissions.rb",
|
63
70
|
"test/app_root/app/models/soldier.rb",
|
64
71
|
"test/app_root/app/models/user_subclass.rb",
|
72
|
+
"test/app_root/app/models/old_soldier.rb",
|
65
73
|
"test/app_root/app/models/user.rb",
|
66
74
|
"test/app_root/app/controllers/application_controller.rb",
|
67
75
|
"test/app_root/config/environment.rb",
|
@@ -74,6 +82,8 @@ Gem::Specification.new do |s|
|
|
74
82
|
"test/app_root/config/routes.rb",
|
75
83
|
"test/app_root/db/migrate/20090429075648_create_soldiers.rb",
|
76
84
|
"test/app_root/db/migrate/20090408115228_create_users.rb",
|
85
|
+
"test/app_root/db/migrate/20091110075649_create_trust_fund_kids.rb",
|
86
|
+
"test/app_root/db/migrate/20091110075648_create_veteran_soldiers.rb",
|
77
87
|
"test/app_root/lib/console_with_fixtures.rb",
|
78
88
|
"test/validation_test.rb",
|
79
89
|
"test/test_helper.rb",
|
data/lib/aegis/has_role.rb
CHANGED
@@ -13,18 +13,33 @@ module Aegis
|
|
13
13
|
|
14
14
|
def has_role(options = {})
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
# Legacy parameter names
|
17
|
+
options[:accessor] ||= options.delete(:name_accessor)
|
18
|
+
options[:reader] ||= options.delete(:name_reader)
|
19
|
+
options[:writer] ||= options.delete(:name_writer)
|
20
|
+
|
21
|
+
if options[:accessor]
|
22
|
+
options[:reader] = "#{options[:accessor]}"
|
23
|
+
options[:writer] = "#{options[:accessor]}="
|
24
|
+
options.delete(:accessor)
|
20
25
|
end
|
21
26
|
|
22
27
|
self.class_eval do
|
23
28
|
|
24
|
-
class_inheritable_accessor :aegis_role_name_reader, :aegis_role_name_writer
|
29
|
+
class_inheritable_accessor :aegis_role_name_reader, :aegis_role_name_writer, :aegis_default_role_name
|
25
30
|
|
26
|
-
|
27
|
-
|
31
|
+
unless method_defined?(:after_initialize)
|
32
|
+
def after_initialize
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
if options[:default]
|
37
|
+
self.aegis_default_role_name = options[:default].to_s
|
38
|
+
after_initialize :set_default_aegis_role_name
|
39
|
+
end
|
40
|
+
|
41
|
+
self.aegis_role_name_reader = (options[:reader] || "role_name").to_sym
|
42
|
+
self.aegis_role_name_writer = (options[:writer] || "role_name=").to_sym
|
28
43
|
|
29
44
|
def aegis_role_name_reader
|
30
45
|
self.class.class_eval{ aegis_role_name_reader }
|
@@ -70,6 +85,12 @@ module Aegis
|
|
70
85
|
|
71
86
|
alias_method_chain :method_missing, :aegis_permissions
|
72
87
|
|
88
|
+
def set_default_aegis_role_name
|
89
|
+
if new_record?
|
90
|
+
self.aegis_role_name ||= self.class.aegis_default_role_name
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
73
94
|
end
|
74
95
|
|
75
96
|
end
|
data/lib/aegis/permissions.rb
CHANGED
@@ -10,7 +10,6 @@ module Aegis
|
|
10
10
|
end
|
11
11
|
|
12
12
|
module ClassMethods
|
13
|
-
|
14
13
|
|
15
14
|
def role(role_name, options = {})
|
16
15
|
role_name = role_name.to_sym
|
@@ -53,8 +52,8 @@ module Aegis
|
|
53
52
|
end
|
54
53
|
|
55
54
|
def evaluate_permission_blocks(role, blocks, *args)
|
56
|
-
|
57
|
-
|
55
|
+
evaluator = Aegis::PermissionEvaluator.new(role)
|
56
|
+
evaluator.evaluate(blocks, args)
|
58
57
|
end
|
59
58
|
|
60
59
|
def denied?(*args)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateTrustFundKids < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def self.up
|
4
|
+
create_table :trust_fund_kids do |t|
|
5
|
+
t.string :role_name
|
6
|
+
t.integer :account_balance
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :trust_fund_kids
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -10,11 +10,12 @@ class HasRoleOptionsTest < ActiveSupport::TestCase
|
|
10
10
|
|
11
11
|
should "allow its role to be written and read" do
|
12
12
|
@soldier.role = "guest"
|
13
|
-
|
13
|
+
assert_equal :guest, @soldier.role.name
|
14
14
|
end
|
15
15
|
|
16
16
|
should "store the role name in the custom field" do
|
17
|
-
|
17
|
+
@soldier.role = "guest"
|
18
|
+
assert_equal "guest", @soldier.rank
|
18
19
|
end
|
19
20
|
|
20
21
|
should "still work with permissions" do
|
@@ -25,4 +26,35 @@ class HasRoleOptionsTest < ActiveSupport::TestCase
|
|
25
26
|
|
26
27
|
end
|
27
28
|
|
29
|
+
context "A record wiring up its role using legacy parameter names" do
|
30
|
+
|
31
|
+
setup do
|
32
|
+
@vetaran_soldier = VeteranSoldier.new
|
33
|
+
end
|
34
|
+
|
35
|
+
should "allow its role to be written and read" do
|
36
|
+
@vetaran_soldier.role = "guest"
|
37
|
+
assert_equal :guest, @vetaran_soldier.role.name
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
context "A record with a default role" do
|
43
|
+
|
44
|
+
should "create new instances with that role" do
|
45
|
+
assert_equal :admin, TrustFundKid.new.role.name
|
46
|
+
end
|
47
|
+
|
48
|
+
should "ignore the default if another role is given" do
|
49
|
+
assert_equal :student, TrustFundKid.new(:role_name => "student").role.name
|
50
|
+
end
|
51
|
+
|
52
|
+
should "not update existing records with the default role" do
|
53
|
+
kid = TrustFundKid.create!(:role_name => "student")
|
54
|
+
kid.update_attributes(:account_balance => 10_000_000)
|
55
|
+
assert_equal :student, kid.reload.role.name
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
28
60
|
end
|
data/test/has_role_test.rb
CHANGED
@@ -12,10 +12,10 @@ class HasRoleTest < ActiveSupport::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
should "know their role" do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
assert_equal :guest, @guest.role.name
|
16
|
+
assert_equal :student, @student.role.name
|
17
|
+
assert_equal :student, @student_subclass.role.name
|
18
|
+
assert_equal :admin, @admin.role.name
|
19
19
|
end
|
20
20
|
|
21
21
|
should "know if they belong to a role" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aegis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Koch
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-11 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -38,10 +38,13 @@ files:
|
|
38
38
|
- lib/aegis/role.rb
|
39
39
|
- lib/rails/active_record.rb
|
40
40
|
- test/app_root/app/controllers/application_controller.rb
|
41
|
+
- test/app_root/app/models/old_soldier.rb
|
41
42
|
- test/app_root/app/models/permissions.rb
|
42
43
|
- test/app_root/app/models/soldier.rb
|
44
|
+
- test/app_root/app/models/trust_fund_kid.rb
|
43
45
|
- test/app_root/app/models/user.rb
|
44
46
|
- test/app_root/app/models/user_subclass.rb
|
47
|
+
- test/app_root/app/models/veteran_soldier.rb
|
45
48
|
- test/app_root/config/boot.rb
|
46
49
|
- test/app_root/config/database.yml
|
47
50
|
- test/app_root/config/environment.rb
|
@@ -53,6 +56,8 @@ files:
|
|
53
56
|
- test/app_root/config/routes.rb
|
54
57
|
- test/app_root/db/migrate/20090408115228_create_users.rb
|
55
58
|
- test/app_root/db/migrate/20090429075648_create_soldiers.rb
|
59
|
+
- test/app_root/db/migrate/20091110075648_create_veteran_soldiers.rb
|
60
|
+
- test/app_root/db/migrate/20091110075649_create_trust_fund_kids.rb
|
56
61
|
- test/app_root/lib/console_with_fixtures.rb
|
57
62
|
- test/app_root/log/.gitignore
|
58
63
|
- test/app_root/script/console
|
@@ -90,9 +95,12 @@ signing_key:
|
|
90
95
|
specification_version: 3
|
91
96
|
summary: Role-based permissions for your user models.
|
92
97
|
test_files:
|
98
|
+
- test/app_root/app/models/trust_fund_kid.rb
|
99
|
+
- test/app_root/app/models/veteran_soldier.rb
|
93
100
|
- test/app_root/app/models/permissions.rb
|
94
101
|
- test/app_root/app/models/soldier.rb
|
95
102
|
- test/app_root/app/models/user_subclass.rb
|
103
|
+
- test/app_root/app/models/old_soldier.rb
|
96
104
|
- test/app_root/app/models/user.rb
|
97
105
|
- test/app_root/app/controllers/application_controller.rb
|
98
106
|
- test/app_root/config/environment.rb
|
@@ -105,6 +113,8 @@ test_files:
|
|
105
113
|
- test/app_root/config/routes.rb
|
106
114
|
- test/app_root/db/migrate/20090429075648_create_soldiers.rb
|
107
115
|
- test/app_root/db/migrate/20090408115228_create_users.rb
|
116
|
+
- test/app_root/db/migrate/20091110075649_create_trust_fund_kids.rb
|
117
|
+
- test/app_root/db/migrate/20091110075648_create_veteran_soldiers.rb
|
108
118
|
- test/app_root/lib/console_with_fixtures.rb
|
109
119
|
- test/validation_test.rb
|
110
120
|
- test/test_helper.rb
|