unidom-authorization 1.6.8 → 1.6.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff9f8b52affaacbf3946c01061e4102bec04468b
4
- data.tar.gz: 1c49adc7c942820c0462623ebce4579d07dab579
3
+ metadata.gz: 994100e1608a14874fe229bd1e7fc01d14a3a3ea
4
+ data.tar.gz: 1f61900ac12296b2b0ea670e4ac6b8b1db0fb369
5
5
  SHA512:
6
- metadata.gz: 8c43d6c7f8714f3580dd3f033e6026897fc5479ecee46852c10de99e018c3ffcd9f882493671730a32d60580c8f4c3d1e6cba03006b2908a7c039984971ef29a
7
- data.tar.gz: 36df0efd33ee7e4ea3c77a0ec88c3cbe99bf59df7e0523384f362d12ff10a71f47bbe1d95239e93a726fad64f7f0a239f8846b90e1c4a3b09b6e64ad2611d8f9
6
+ metadata.gz: f6ccc25c14df6fea53f8ab442e4f5bc95fcb50f1e45d561252929bfddfb9f7092912559eb60be58398b069f93a913c097dca4de3573c7019b32fd16792a161a4
7
+ data.tar.gz: fc678376a6f47aca5449b3ed0841fe64d3019ff25ea66b6ede20144ab07f1a3a5899e4ea23a6931a91b1c8ba764b3fdb4226d7343c668e26662bebaa2d9f6616
data/README.md CHANGED
@@ -218,5 +218,31 @@ describe Unidom::Authorization::Permission, type: :model do
218
218
 
219
219
  end
220
220
 
221
+ end
222
+
223
+ # spec/models/unidom/authorization/authorizing_spec.rb
224
+ describe Unidom::Authorization::Authorizing, type: :model do
225
+
226
+ before :each do
227
+ end
228
+
229
+ after :each do
230
+ end
231
+
232
+ context do
233
+
234
+ model_attributes = {
235
+ authorizer_id: SecureRandom.uuid,
236
+ authorizer_type: 'Unidom::Authorization::Authorizer::Mock',
237
+ authorized_id: SecureRandom.uuid,
238
+ authorized_type: 'Unidom::Authorization::Authorized::Mock',
239
+ permission_id: SecureRandom.uuid
240
+ }
241
+ authorizer_class_list = [ Unidom::Visitor::User, Unidom::Party::Person ]
242
+
243
+ it_behaves_like 'Unidom::Authorization::Authorizing', model_attributes, authorizer_class_list, [ {}, { name: 'Tim' } ]
244
+
245
+ end
246
+
221
247
  end
222
248
  ```
@@ -14,6 +14,8 @@ module Unidom::Authorization::Concerns::AsAuthorized
14
14
  # 将本参与者或访问者,授予指定的权限 permission , by 是授权者, at 是授权时间,缺省为当前时间。如:
15
15
  # 假设 selected_person 对应的类已经 include Unidom::Authorization::Concerns::AsAuthorized 。
16
16
  # selected_person.is_authorized! permission, by: current_person
17
+ # # or
18
+ # selected_person.is_authorized! permission, by: current_person, at: Time.now
17
19
  def is_authorized!(permission: nil, by: nil, at: Time.now)
18
20
 
19
21
  assert_present! :permission, permission
@@ -24,6 +26,12 @@ module Unidom::Authorization::Concerns::AsAuthorized
24
26
 
25
27
  end
26
28
 
29
+ ##
30
+ # 判断本参与者或访问者,在给定的时间 at 是否拥有给定的权限 permission 。如:
31
+ # 假设 selected_person 对应的类已经 include Unidom::Authorization::Concerns::AsAuthorized 。
32
+ # selected_person.is_authorized? permission
33
+ # # or
34
+ # selected_person.is_authorized? permission, at: Time.now
27
35
  def is_authorized?(permission: nil, at: Time.now)
28
36
 
29
37
  assert_present! :permission, permission
@@ -30,6 +30,12 @@ module Unidom::Authorization::Concerns::AsPermission
30
30
 
31
31
  end
32
32
 
33
+ ##
34
+ # 判断当前权限,在给定的时间 at 是否授权给指定的参与者或访问者 authorized 。如:
35
+ # 假设 selected_person 对应的类已经 include Unidom::Authorization::Concerns::AsAuthorized 。
36
+ # permission.authorize? selected_person
37
+ # # or
38
+ # permission.authorize? selected_person, at: Time.now
33
39
  def authorize?(authorized, at: Time.now)
34
40
 
35
41
  assert_present! :authorized, authorized
@@ -0,0 +1,19 @@
1
+ shared_examples 'Unidom::Authorization::Authorizing' do |model_attributes, authorizer_class_list, authorizer_attributes_list|
2
+
3
+ before :each do
4
+ end
5
+
6
+ after :each do
7
+ end
8
+
9
+ context do
10
+
11
+ authorizer_class_list.each_with_index do |authorizer_class, index|
12
+ it_behaves_like 'belongs_to', model_attributes, :authorizer, authorizer_class, authorizer_attributes_list[index]
13
+ end
14
+
15
+ it_behaves_like 'polymorphic scope', model_attributes, :authorized_by, :authorizer, authorizer_class_list
16
+
17
+ end
18
+
19
+ end
@@ -23,7 +23,8 @@ describe Unidom::Authorization::Permission, type: :model do
23
23
  it_behaves_like 'scope', :path_is, [
24
24
  { attributes_collection: [ model_attributes ], count_diff: 1, args: [ model_attributes[:path] ] },
25
25
  { attributes_collection: [ model_attributes ], count_diff: 0, args: [ "/#{model_attributes[:path]}" ] },
26
- { attributes_collection: [ model_attributes ], count_diff: 0, args: [ "#{model_attributes[:path]}.html" ] } ]
26
+ { attributes_collection: [ model_attributes ], count_diff: 0, args: [ "#{model_attributes[:path]}.html" ] }
27
+ ]
27
28
 
28
29
  end
29
30
 
@@ -1,3 +1,4 @@
1
1
  require 'rspec/models/unidom/authorization/concerns/as_authorized_shared_examples'
2
2
  require 'rspec/models/unidom/authorization/concerns/as_permission_shared_examples'
3
+ require 'rspec/models/unidom/authorization/authorizing_shared_examples'
3
4
  require 'rspec/models/unidom/authorization/permission_shared_examples'
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Authorization
3
- VERSION = '1.6.8'.freeze
3
+ VERSION = '1.6.9'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-authorization
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.8
4
+ version: 1.6.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-17 00:00:00.000000000 Z
11
+ date: 2017-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -52,6 +52,7 @@ files:
52
52
  - config/routes.rb
53
53
  - db/migrate/20000401000000_create_unidom_permissions.rb
54
54
  - db/migrate/20000402000000_create_unidom_authorizings.rb
55
+ - lib/rspec/models/unidom/authorization/authorizing_shared_examples.rb
55
56
  - lib/rspec/models/unidom/authorization/authorizing_spec.rb
56
57
  - lib/rspec/models/unidom/authorization/concerns/as_authorized_shared_examples.rb
57
58
  - lib/rspec/models/unidom/authorization/concerns/as_permission_shared_examples.rb