right_on 0.1.0 → 0.2.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/.travis.yml +1 -0
- data/CHANGELOG.md +13 -0
- data/gemfiles/rails5.gemfile +6 -0
- data/lib/right_on/right.rb +41 -35
- data/lib/right_on/version.rb +1 -1
- data/right_on.gemspec +6 -6
- data/spec/support/coverage_loader.rb +4 -26
- metadata +8 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 440d9cc6f2bd3abd809e3a57bb7c62e6086ba1c9
|
4
|
+
data.tar.gz: ca7322b951d1f21f126c055f4ca9c69540c0075f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40ac1d0adebc602bb7b7d051a6b679d0f3a28e7edf79a6b873fc9a3bb25c100b3604f83818aa67991b9dde0ac67e0744964080fc4e4fe0b581e6c8ab1644347e
|
7
|
+
data.tar.gz: 7c8b1ffba321fc5098f516a76105c7e6454aef06fcf0af0e9bb741b3ec92138ae82ab98af0c19ba45ca5f8cb2cee6956abdeab2c69967ca28ab5adc2881e65a7
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Change Log
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
|
+
This changelog adheres to [Keep a CHANGELOG](http://keepachangelog.com/).
|
5
|
+
|
6
|
+
## 0.2.0
|
7
|
+
|
8
|
+
### Added
|
9
|
+
- Rails 4/5 support
|
10
|
+
- Groupless rights
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- [TT-1392] Changelog file
|
data/lib/right_on/right.rb
CHANGED
@@ -23,7 +23,7 @@ module RightOn
|
|
23
23
|
unless @@restricted_by_right_classes.include?(klass)
|
24
24
|
@@restricted_by_right_classes << klass
|
25
25
|
end
|
26
|
-
has_one klass.table_name.singularize.to_sym, :
|
26
|
+
has_one klass.table_name.singularize.to_sym, dependent: :restrict_with_exception
|
27
27
|
end
|
28
28
|
|
29
29
|
def rights_yaml(file_path)
|
@@ -31,52 +31,58 @@ module RightOn
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def by_groups
|
34
|
-
rights =
|
35
|
-
rights +=
|
36
|
-
rights += restricted_rights_with_group
|
34
|
+
rights = regular_rights_with_group + restricted_rights_with_group
|
35
|
+
rights += (Right.all - rights)
|
37
36
|
rights.group_by(&:group)
|
38
37
|
end
|
39
38
|
|
40
39
|
def regular_rights_with_group
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
rights_for_group = []
|
46
|
-
right_names.each do |right_name|
|
47
|
-
if right_name.is_a?(String) # controller
|
48
|
-
r = rights_by_name[right_name]
|
49
|
-
raise right_name if r.nil?
|
50
|
-
rights_for_group << r
|
51
|
-
else right_name.is_a?(Hash) # controller + actions
|
52
|
-
controller, actions = right_name.first
|
53
|
-
r = rights_by_name[controller]
|
54
|
-
if r
|
55
|
-
rights_for_group << r
|
56
|
-
end
|
57
|
-
actions.each do |action|
|
58
|
-
name = "#{controller}##{action}"
|
59
|
-
r = rights_by_name[name]
|
60
|
-
raise name.inspect + "****" + right_name.inspect + '---' + action_right.inspect if r.nil?
|
61
|
-
rights_for_group << r
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
rights_for_group.each{|r| r.group = group}
|
66
|
-
rights += rights_for_group
|
40
|
+
yaml_rights.each_pair.flat_map do |group, right_names|
|
41
|
+
right_names
|
42
|
+
.flat_map { |right_name| right_name_to_rights(right_name) }
|
43
|
+
.each { |r| r.group = group }
|
67
44
|
end
|
68
|
-
|
45
|
+
end
|
46
|
+
|
47
|
+
def yaml_rights
|
48
|
+
YAML::load_file(@@rights_yaml)['rights']
|
49
|
+
end
|
50
|
+
|
51
|
+
def right_name_to_rights(right_name)
|
52
|
+
case right_name
|
53
|
+
when String # controller
|
54
|
+
[rights_by_name!(right_name)]
|
55
|
+
when Hash # controller + actions
|
56
|
+
controller, actions = right_name.first
|
57
|
+
controller_rights(controller) + action_rights(controller, actions)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def controller_rights(controller)
|
62
|
+
r = rights_by_name[controller]
|
63
|
+
return [] unless r
|
64
|
+
[r]
|
65
|
+
end
|
66
|
+
|
67
|
+
def action_rights(controller, actions)
|
68
|
+
actions.map { |action| rights_by_name!("#{controller}##{action}") }
|
69
|
+
end
|
70
|
+
|
71
|
+
def rights_by_name
|
72
|
+
@rights_by_name ||= Hash[Right.all.map{|r| [r.name, r]}]
|
73
|
+
end
|
74
|
+
|
75
|
+
def rights_by_name!(name)
|
76
|
+
rights_by_name[name] or fail name.inspect
|
69
77
|
end
|
70
78
|
|
71
79
|
def restricted_rights_with_group
|
72
|
-
|
73
|
-
@@restricted_by_right_classes.each do |klass|
|
80
|
+
@@restricted_by_right_classes.flat_map do |klass|
|
74
81
|
group = klass.restricted_by_right_group
|
75
|
-
|
82
|
+
all_rights(klass).map(&:right).sort_by(&:name).each do |right|
|
76
83
|
right.group = group
|
77
84
|
end
|
78
85
|
end
|
79
|
-
rights
|
80
86
|
end
|
81
87
|
|
82
88
|
def all_rights(klass)
|
data/lib/right_on/version.rb
CHANGED
data/right_on.gemspec
CHANGED
@@ -18,14 +18,14 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency
|
23
|
-
spec.add_dependency
|
24
|
-
spec.add_dependency
|
25
|
-
spec.add_development_dependency
|
21
|
+
spec.add_dependency 'activerecord', '>= 3.2.0'
|
22
|
+
spec.add_dependency 'activesupport', '>= 3.2.0'
|
23
|
+
spec.add_dependency 'dependent_restrict', '>= 0.2.3'
|
24
|
+
spec.add_dependency 'input_reader', '~> 0.0'
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
26
26
|
spec.add_development_dependency 'rake'
|
27
27
|
spec.add_development_dependency 'rspec'
|
28
|
-
spec.add_development_dependency '
|
28
|
+
spec.add_development_dependency 'coverage-kit'
|
29
29
|
spec.add_development_dependency 'simplecov-rcov'
|
30
30
|
spec.add_development_dependency 'coveralls'
|
31
31
|
spec.add_development_dependency 'sqlite3'
|
@@ -1,26 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require 'simplecov-rcov'
|
6
|
-
require 'coveralls'
|
7
|
-
Coveralls.wear!
|
8
|
-
|
9
|
-
SimpleCov.formatters = [
|
10
|
-
SimpleCov::Formatter::RcovFormatter,
|
11
|
-
Coveralls::SimpleCov::Formatter
|
12
|
-
]
|
13
|
-
SimpleCov.start do
|
14
|
-
add_filter '/vendor/'
|
15
|
-
add_filter '/spec/'
|
16
|
-
add_group 'lib', 'lib'
|
17
|
-
end
|
18
|
-
SimpleCov.at_exit do
|
19
|
-
SimpleCov.result.format!
|
20
|
-
percent = SimpleCov.result.covered_percent
|
21
|
-
unless percent >= MINIMUM_COVERAGE
|
22
|
-
puts "Coverage must be above #{MINIMUM_COVERAGE}%. It is #{"%.2f" % percent}%"
|
23
|
-
Kernel.exit(1)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
1
|
+
require 'simplecov-rcov'
|
2
|
+
require 'coveralls'
|
3
|
+
require 'coverage/kit'
|
4
|
+
Coverage::Kit.setup(minimum_coverage: 84.7)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_on
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Noack
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-06-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -18,9 +18,6 @@ dependencies:
|
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: 3.2.0
|
21
|
-
- - "<"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 5.0.0
|
24
21
|
type: :runtime
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -28,9 +25,6 @@ dependencies:
|
|
28
25
|
- - ">="
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: 3.2.0
|
31
|
-
- - "<"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 5.0.0
|
34
28
|
- !ruby/object:Gem::Dependency
|
35
29
|
name: activesupport
|
36
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,9 +32,6 @@ dependencies:
|
|
38
32
|
- - ">="
|
39
33
|
- !ruby/object:Gem::Version
|
40
34
|
version: 3.2.0
|
41
|
-
- - "<"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 5.0.0
|
44
35
|
type: :runtime
|
45
36
|
prerelease: false
|
46
37
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -48,23 +39,20 @@ dependencies:
|
|
48
39
|
- - ">="
|
49
40
|
- !ruby/object:Gem::Version
|
50
41
|
version: 3.2.0
|
51
|
-
- - "<"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 5.0.0
|
54
42
|
- !ruby/object:Gem::Dependency
|
55
43
|
name: dependent_restrict
|
56
44
|
requirement: !ruby/object:Gem::Requirement
|
57
45
|
requirements:
|
58
46
|
- - ">="
|
59
47
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0.2.
|
48
|
+
version: 0.2.3
|
61
49
|
type: :runtime
|
62
50
|
prerelease: false
|
63
51
|
version_requirements: !ruby/object:Gem::Requirement
|
64
52
|
requirements:
|
65
53
|
- - ">="
|
66
54
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0.2.
|
55
|
+
version: 0.2.3
|
68
56
|
- !ruby/object:Gem::Dependency
|
69
57
|
name: input_reader
|
70
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,7 +110,7 @@ dependencies:
|
|
122
110
|
- !ruby/object:Gem::Version
|
123
111
|
version: '0'
|
124
112
|
- !ruby/object:Gem::Dependency
|
125
|
-
name:
|
113
|
+
name: coverage-kit
|
126
114
|
requirement: !ruby/object:Gem::Requirement
|
127
115
|
requirements:
|
128
116
|
- - ">="
|
@@ -200,6 +188,7 @@ files:
|
|
200
188
|
- ".gitignore"
|
201
189
|
- ".rspec"
|
202
190
|
- ".travis.yml"
|
191
|
+
- CHANGELOG.md
|
203
192
|
- Gemfile
|
204
193
|
- LICENSE
|
205
194
|
- README.md
|
@@ -208,6 +197,7 @@ files:
|
|
208
197
|
- db/rights_roles.yml
|
209
198
|
- gemfiles/rails3.gemfile
|
210
199
|
- gemfiles/rails4.gemfile
|
200
|
+
- gemfiles/rails5.gemfile
|
211
201
|
- lib/right_on.rb
|
212
202
|
- lib/right_on/action_controller_extensions.rb
|
213
203
|
- lib/right_on/generators/USAGE
|
@@ -254,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
244
|
version: '0'
|
255
245
|
requirements: []
|
256
246
|
rubyforge_project:
|
257
|
-
rubygems_version: 2.
|
247
|
+
rubygems_version: 2.5.2
|
258
248
|
signing_key:
|
259
249
|
specification_version: 4
|
260
250
|
summary: Set of extensions to core rails to give rights and roles.
|