monarchy 2.0.8 → 2.1.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.
- checksums.yaml +4 -4
- data/.github_changelog_generator +1 -1
- data/.rubocop.yml +3 -1
- data/.travis.yml +2 -2
- data/CHANGELOG.md +10 -2
- data/Gemfile +4 -5
- data/Gemfile.lock +18 -19
- data/docs/acts_as_member.md +7 -0
- data/docs/acts_as_user.md +6 -0
- data/lib/monarchy/acts_as_member.rb +16 -0
- data/lib/monarchy/acts_as_user.rb +13 -1
- data/lib/monarchy/version.rb +1 -1
- data/monarchy.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4c1b86d97c67b9409578191ef62d270fb906dec7
|
|
4
|
+
data.tar.gz: 77e1921b3153f9ebd4ec32a7a025efae77c9ec05
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a25851a0766ad737e3707026aae70160d28077de7c545bdfea6e1b0645bad7ecd460c90192162632c80a2d860944e5f462799660dc2af9c59542779dc4b8ebe5
|
|
7
|
+
data.tar.gz: e1ad1bf1ee4f3f6eca2c722a30fb38e1efd1e61dcae631506b54c6554dba33e4ca6a257e72faba47df681a9deeb1d80f4efe6c8816f6dfd9dc3cd41bcc7614cf
|
data/.github_changelog_generator
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
future-release=2.0
|
|
1
|
+
future-release=2.1.0
|
data/.rubocop.yml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
TargetRubyVersion: 2.
|
|
2
|
+
TargetRubyVersion: 2.4
|
|
3
3
|
Exclude:
|
|
4
4
|
- 'dummy/db/seeds.rb'
|
|
5
5
|
- 'dummy/db/migrate/**'
|
|
@@ -11,6 +11,8 @@ Metrics/LineLength:
|
|
|
11
11
|
Max: 125
|
|
12
12
|
Metrics/ModuleLength:
|
|
13
13
|
Max: 150
|
|
14
|
+
Metrics/BlockLength:
|
|
15
|
+
ExcludedMethods: ['describe', 'context']
|
|
14
16
|
Style/CaseIndentation:
|
|
15
17
|
Enabled: false
|
|
16
18
|
Style/StructInheritance:
|
data/.travis.yml
CHANGED
|
@@ -3,7 +3,7 @@ addons:
|
|
|
3
3
|
repo_token: 60b8a9fc7e8d659c7dd22ed8912651c35b3ca5eebf1c23d5470308e6a802abbd
|
|
4
4
|
language: ruby
|
|
5
5
|
rvm:
|
|
6
|
-
- 2.
|
|
7
|
-
before_install: gem
|
|
6
|
+
- 2.4.0
|
|
7
|
+
before_install: gem update --system
|
|
8
8
|
after_success:
|
|
9
9
|
- bundle exec codeclimate-test-reporter
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## [2.0
|
|
4
|
-
[Full Changelog](https://github.com/Exelord/Monarchy/compare/v2.0.
|
|
3
|
+
## [2.1.0](https://github.com/Exelord/Monarchy/tree/2.1.0) (2017-03-30)
|
|
4
|
+
[Full Changelog](https://github.com/Exelord/Monarchy/compare/v2.0.8...2.1.0)
|
|
5
|
+
|
|
6
|
+
**Merged pull requests:**
|
|
7
|
+
|
|
8
|
+
- Users/Members with\_access\_to specific resource [\#70](https://github.com/Exelord/Monarchy/pull/70) ([Exelord](https://github.com/Exelord))
|
|
9
|
+
- Update gems [\#69](https://github.com/Exelord/Monarchy/pull/69) ([Exelord](https://github.com/Exelord))
|
|
10
|
+
|
|
11
|
+
## [v2.0.8](https://github.com/Exelord/Monarchy/tree/v2.0.8) (2017-01-12)
|
|
12
|
+
[Full Changelog](https://github.com/Exelord/Monarchy/compare/v2.0.7...v2.0.8)
|
|
5
13
|
|
|
6
14
|
**Merged pull requests:**
|
|
7
15
|
|
data/Gemfile
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
source 'https://rubygems.org'
|
|
3
|
-
ruby '2.
|
|
3
|
+
ruby '2.4.0'
|
|
4
4
|
|
|
5
5
|
# Declare your gem's dependencies in monarchy.gemspec.
|
|
6
6
|
# Bundler will treat runtime dependencies like base dependencies, and
|
|
@@ -22,11 +22,10 @@ group :development, :test do
|
|
|
22
22
|
gem 'pry-rails', '0.3.4'
|
|
23
23
|
gem 'rails', '5.0.1'
|
|
24
24
|
gem 'rspec-rails', '3.5.2'
|
|
25
|
-
gem 'rubocop', '0.
|
|
25
|
+
gem 'rubocop', '0.47.1'
|
|
26
26
|
gem 'shoulda-matchers', '3.1.1'
|
|
27
27
|
gem 'sqlite3', '1.3.13'
|
|
28
|
-
gem 'tqdm', '0.3.0'
|
|
29
28
|
end
|
|
30
29
|
|
|
31
|
-
gem 'codeclimate-test-reporter', '1.0.
|
|
32
|
-
gem 'simplecov', '0.
|
|
30
|
+
gem 'codeclimate-test-reporter', '~>1.0.5', group: :test
|
|
31
|
+
gem 'simplecov', '0.13.0', group: :test
|
data/Gemfile.lock
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
monarchy (2.0
|
|
4
|
+
monarchy (2.1.0)
|
|
5
5
|
active_record_union (= 1.2.0)
|
|
6
6
|
activerecord (>= 4.2.7.1)
|
|
7
|
-
closure_tree (= 6.
|
|
7
|
+
closure_tree (= 6.3.0)
|
|
8
8
|
configurations (= 2.2.2)
|
|
9
9
|
tqdm (= 0.3.0)
|
|
10
10
|
|
|
@@ -52,17 +52,17 @@ GEM
|
|
|
52
52
|
tzinfo (~> 1.1)
|
|
53
53
|
arel (7.1.4)
|
|
54
54
|
ast (2.3.0)
|
|
55
|
-
builder (3.2.
|
|
56
|
-
closure_tree (6.
|
|
55
|
+
builder (3.2.3)
|
|
56
|
+
closure_tree (6.3.0)
|
|
57
57
|
activerecord (>= 4.1.0)
|
|
58
58
|
with_advisory_lock (>= 3.0.0)
|
|
59
|
-
codeclimate-test-reporter (1.0.
|
|
59
|
+
codeclimate-test-reporter (1.0.5)
|
|
60
60
|
simplecov
|
|
61
61
|
coderay (1.1.1)
|
|
62
62
|
concurrent-ruby (1.0.4)
|
|
63
63
|
configurations (2.2.2)
|
|
64
64
|
database_cleaner (1.5.3)
|
|
65
|
-
diff-lcs (1.
|
|
65
|
+
diff-lcs (1.3)
|
|
66
66
|
docile (1.1.5)
|
|
67
67
|
erubis (2.7.0)
|
|
68
68
|
factory_girl (4.8.0)
|
|
@@ -73,7 +73,7 @@ GEM
|
|
|
73
73
|
ffaker (2.4.0)
|
|
74
74
|
globalid (0.3.7)
|
|
75
75
|
activesupport (>= 4.1.0)
|
|
76
|
-
i18n (0.
|
|
76
|
+
i18n (0.8.0)
|
|
77
77
|
json (2.0.3)
|
|
78
78
|
loofah (2.0.3)
|
|
79
79
|
nokogiri (>= 1.5.9)
|
|
@@ -88,7 +88,7 @@ GEM
|
|
|
88
88
|
nio4r (1.2.1)
|
|
89
89
|
nokogiri (1.7.0.1)
|
|
90
90
|
mini_portile2 (~> 2.1.0)
|
|
91
|
-
parser (2.
|
|
91
|
+
parser (2.4.0.0)
|
|
92
92
|
ast (~> 2.2)
|
|
93
93
|
powerpack (0.1.1)
|
|
94
94
|
pry (0.10.4)
|
|
@@ -146,8 +146,8 @@ GEM
|
|
|
146
146
|
rspec-mocks (~> 3.5.0)
|
|
147
147
|
rspec-support (~> 3.5.0)
|
|
148
148
|
rspec-support (3.5.0)
|
|
149
|
-
rubocop (0.
|
|
150
|
-
parser (>= 2.3.
|
|
149
|
+
rubocop (0.47.1)
|
|
150
|
+
parser (>= 2.3.3.1, < 3.0)
|
|
151
151
|
powerpack (~> 0.1)
|
|
152
152
|
rainbow (>= 1.99.1, < 3.0)
|
|
153
153
|
ruby-progressbar (~> 1.7)
|
|
@@ -155,7 +155,7 @@ GEM
|
|
|
155
155
|
ruby-progressbar (1.8.1)
|
|
156
156
|
shoulda-matchers (3.1.1)
|
|
157
157
|
activesupport (>= 4.0.0)
|
|
158
|
-
simplecov (0.
|
|
158
|
+
simplecov (0.13.0)
|
|
159
159
|
docile (~> 1.1.0)
|
|
160
160
|
json (>= 1.8, < 3)
|
|
161
161
|
simplecov-html (~> 0.10.0)
|
|
@@ -174,8 +174,8 @@ GEM
|
|
|
174
174
|
tqdm (0.3.0)
|
|
175
175
|
tzinfo (1.2.2)
|
|
176
176
|
thread_safe (~> 0.1)
|
|
177
|
-
unicode-display_width (1.1.
|
|
178
|
-
websocket-driver (0.6.
|
|
177
|
+
unicode-display_width (1.1.3)
|
|
178
|
+
websocket-driver (0.6.5)
|
|
179
179
|
websocket-extensions (>= 0.1.0)
|
|
180
180
|
websocket-extensions (0.1.2)
|
|
181
181
|
with_advisory_lock (3.0.0)
|
|
@@ -187,7 +187,7 @@ PLATFORMS
|
|
|
187
187
|
|
|
188
188
|
DEPENDENCIES
|
|
189
189
|
bundler (~> 1.12)
|
|
190
|
-
codeclimate-test-reporter (
|
|
190
|
+
codeclimate-test-reporter (~> 1.0.5)
|
|
191
191
|
database_cleaner (= 1.5.3)
|
|
192
192
|
factory_girl_rails (= 4.8.0)
|
|
193
193
|
ffaker (= 2.4.0)
|
|
@@ -197,14 +197,13 @@ DEPENDENCIES
|
|
|
197
197
|
rake (~> 12.0)
|
|
198
198
|
rspec (= 3.5.0)
|
|
199
199
|
rspec-rails (= 3.5.2)
|
|
200
|
-
rubocop (= 0.
|
|
200
|
+
rubocop (= 0.47.1)
|
|
201
201
|
shoulda-matchers (= 3.1.1)
|
|
202
|
-
simplecov (= 0.
|
|
202
|
+
simplecov (= 0.13.0)
|
|
203
203
|
sqlite3 (= 1.3.13)
|
|
204
|
-
tqdm (= 0.3.0)
|
|
205
204
|
|
|
206
205
|
RUBY VERSION
|
|
207
|
-
ruby 2.
|
|
206
|
+
ruby 2.4.0p0
|
|
208
207
|
|
|
209
208
|
BUNDLED WITH
|
|
210
|
-
1.
|
|
209
|
+
1.14.3
|
data/docs/acts_as_member.md
CHANGED
|
@@ -22,6 +22,13 @@ You can select all members accessible for specific user by using a scope: `acces
|
|
|
22
22
|
``` ruby
|
|
23
23
|
Monarchy::member_class.accessible_for(current_user) # returns [member1, member2, member5]
|
|
24
24
|
```
|
|
25
|
+
|
|
26
|
+
### .with_access_to
|
|
27
|
+
You can select all members with access to the specific resource by using a scope: `with_access_to`, eg:
|
|
28
|
+
``` ruby
|
|
29
|
+
Monarchy::member_class.with_access_to(resource) # returns [member1, member2, member5]
|
|
30
|
+
```
|
|
31
|
+
|
|
25
32
|
## Public Relations:
|
|
26
33
|
|
|
27
34
|
### #roles
|
data/docs/acts_as_user.md
CHANGED
|
@@ -22,6 +22,12 @@ Returns all memberships (`member` model) of the user
|
|
|
22
22
|
Returns all users accessible for the specific user
|
|
23
23
|
It includes all users from all resource which the user has any access.
|
|
24
24
|
|
|
25
|
+
### .with_access_to
|
|
26
|
+
You can select all users with access to the specific resource by using a scope: `with_access_to`, eg:
|
|
27
|
+
``` ruby
|
|
28
|
+
Monarchy::user_class.with_access_to(resource) # returns [user1, user2, user5]
|
|
29
|
+
```
|
|
30
|
+
|
|
25
31
|
## Methods
|
|
26
32
|
|
|
27
33
|
### #roles_for(resource, inheritance = true)
|
|
@@ -26,6 +26,11 @@ module Monarchy
|
|
|
26
26
|
Monarchy::Validators.user(user)
|
|
27
27
|
where(hierarchy: Monarchy.hierarchy_class.accessible_for(user))
|
|
28
28
|
end)
|
|
29
|
+
|
|
30
|
+
scope :with_access_to, (lambda do |resource|
|
|
31
|
+
Monarchy::Validators.resource(resource)
|
|
32
|
+
with_ancestors_access(resource).union(with_descendants_access(resource))
|
|
33
|
+
end)
|
|
29
34
|
end
|
|
30
35
|
|
|
31
36
|
def include_callbacks
|
|
@@ -45,6 +50,17 @@ module Monarchy
|
|
|
45
50
|
belongs_to :user, class_name: "::#{Monarchy.user_class}"
|
|
46
51
|
belongs_to :hierarchy, class_name: "::#{Monarchy.hierarchy_class}"
|
|
47
52
|
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def with_ancestors_access(resource)
|
|
57
|
+
unscoped.where(hierarchy: resource.hierarchy.self_and_ancestors)
|
|
58
|
+
.joins(:roles).where(monarchy_roles: { inherited: true })
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def with_descendants_access(resource)
|
|
62
|
+
unscoped.where(hierarchy: resource.hierarchy.descendants)
|
|
63
|
+
end
|
|
48
64
|
end
|
|
49
65
|
|
|
50
66
|
module InstanceMethods
|
|
@@ -5,14 +5,26 @@ module Monarchy
|
|
|
5
5
|
|
|
6
6
|
module ClassMethods
|
|
7
7
|
def acts_as_user
|
|
8
|
+
extend Monarchy::ActsAsUser::SupportMethods
|
|
9
|
+
|
|
8
10
|
has_many :members, class_name: "::#{Monarchy.member_class}", dependent: :destroy
|
|
9
11
|
has_many :hierarchies, through: :members, class_name: "::#{Monarchy.hierarchy_class}"
|
|
10
12
|
|
|
13
|
+
include_scopes
|
|
14
|
+
|
|
15
|
+
include Monarchy::ActsAsUser::InstanceMethods
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module SupportMethods
|
|
20
|
+
def include_scopes
|
|
11
21
|
scope :accessible_for, (lambda do |user|
|
|
12
22
|
where(id: Monarchy.member_class.accessible_for(user).select('user_id AS id')).union(where(id: user.id))
|
|
13
23
|
end)
|
|
14
24
|
|
|
15
|
-
|
|
25
|
+
scope :with_access_to, (lambda do |resource|
|
|
26
|
+
User.where(id: Member.with_access_to(resource).select(:user_id))
|
|
27
|
+
end)
|
|
16
28
|
end
|
|
17
29
|
end
|
|
18
30
|
|
data/lib/monarchy/version.rb
CHANGED
data/monarchy.gemspec
CHANGED
|
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
|
27
27
|
s.required_ruby_version = '>= 2.3'
|
|
28
28
|
|
|
29
29
|
s.add_dependency 'activerecord', '>=4.2.7.1'
|
|
30
|
-
s.add_dependency 'closure_tree', '6.
|
|
30
|
+
s.add_dependency 'closure_tree', '6.3.0'
|
|
31
31
|
s.add_dependency 'configurations', '2.2.2'
|
|
32
32
|
s.add_dependency 'active_record_union', '1.2.0'
|
|
33
33
|
s.add_dependency 'tqdm', '0.3.0'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: monarchy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Exelord
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-03-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - '='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 6.
|
|
33
|
+
version: 6.3.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - '='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 6.
|
|
40
|
+
version: 6.3.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: configurations
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
259
259
|
version: '0'
|
|
260
260
|
requirements: []
|
|
261
261
|
rubyforge_project:
|
|
262
|
-
rubygems_version: 2.6.
|
|
262
|
+
rubygems_version: 2.6.10
|
|
263
263
|
signing_key:
|
|
264
264
|
specification_version: 4
|
|
265
265
|
summary: Hierarchical access management system with roles inheritance.
|