ingress 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ingress.gemspec +4 -0
- data/lib/ingress/permission_rule.rb +8 -4
- data/lib/ingress/permissions.rb +3 -3
- data/lib/ingress/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8f17e43cf5bacf92bc38048ec7e9eb8588e46567d2ac14a86b64664c369c57e
|
4
|
+
data.tar.gz: ffebe86e57b6539ccee3bf4265e4d9dc103a88260e16354f4e4e1a8280600f00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22e432bad1f93dad170bb773cb259558ed95bebbd5bfd4cb885498609e3b9912136fbb159dd5dfb3af9c6c99350a5ccf9a3582937a9b7443f66aa9a3dfd1668c
|
7
|
+
data.tar.gz: 9e27effdf8b6f8a222c50c8f7d05fed65447fa22dd8a9e8cffb3bfa25cd67437917377bf57ce57fca0c547ff623545a447af758f451158b475af4439d717baf3
|
data/ingress.gemspec
CHANGED
@@ -12,6 +12,10 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.summary = %q{Simple role based authorization for Ruby applications}
|
13
13
|
spec.homepage = ""
|
14
14
|
spec.license = "MIT"
|
15
|
+
spec.metadata = {
|
16
|
+
"bug_tracker_uri" => "https://github.com/skorks/ingress/issues",
|
17
|
+
"source_code_uri" => "https://github.com/skorks/ingress",
|
18
|
+
}
|
15
19
|
|
16
20
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
21
|
spec.bindir = "bin"
|
@@ -13,11 +13,11 @@ module Ingress
|
|
13
13
|
@allows
|
14
14
|
end
|
15
15
|
|
16
|
-
def match?(given_action, given_subject, user)
|
16
|
+
def match?(given_action, given_subject, user, options = {})
|
17
17
|
return false unless action_matches?(given_action)
|
18
18
|
return false unless subject_matches?(given_subject)
|
19
19
|
|
20
|
-
conditions_match?(user, given_subject)
|
20
|
+
conditions_match?(user, given_subject, options)
|
21
21
|
end
|
22
22
|
|
23
23
|
private
|
@@ -35,9 +35,13 @@ module Ingress
|
|
35
35
|
"*" == subject
|
36
36
|
end
|
37
37
|
|
38
|
-
def conditions_match?(user, given_subject)
|
38
|
+
def conditions_match?(user, given_subject, options)
|
39
39
|
conditions.all? do |condition|
|
40
|
-
condition.
|
40
|
+
if condition.arity == 2
|
41
|
+
condition.call(user, given_subject)
|
42
|
+
else
|
43
|
+
condition.call(user, given_subject, options)
|
44
|
+
end
|
41
45
|
end
|
42
46
|
rescue => e
|
43
47
|
log_error(e)
|
data/lib/ingress/permissions.rb
CHANGED
@@ -42,17 +42,17 @@ module Ingress
|
|
42
42
|
@user = user
|
43
43
|
end
|
44
44
|
|
45
|
-
def can?(action, subject)
|
45
|
+
def can?(action, subject, options = {})
|
46
46
|
user_role_identifiers.any? do |role_identifier|
|
47
47
|
rules = self.class.permissions_repository.rules_for(role_identifier, action, subject)
|
48
48
|
|
49
49
|
cannot_match = rules.reject(&:allows?).any? do |rule|
|
50
|
-
rule.match?(action, subject, user)
|
50
|
+
rule.match?(action, subject, user, options)
|
51
51
|
end
|
52
52
|
break false if cannot_match
|
53
53
|
|
54
54
|
rules.select(&:allows?).any? do |rule|
|
55
|
-
rule.match?(action, subject, user)
|
55
|
+
rule.match?(action, subject, user, options)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
data/lib/ingress/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ingress
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alan Skorkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -87,7 +87,9 @@ files:
|
|
87
87
|
homepage: ''
|
88
88
|
licenses:
|
89
89
|
- MIT
|
90
|
-
metadata:
|
90
|
+
metadata:
|
91
|
+
bug_tracker_uri: https://github.com/skorks/ingress/issues
|
92
|
+
source_code_uri: https://github.com/skorks/ingress
|
91
93
|
post_install_message:
|
92
94
|
rdoc_options: []
|
93
95
|
require_paths:
|