mumukit-auth 7.3.0 → 7.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc33ea36ba661f8af56c6e9d561f159a458a5713fda79d3385fa06ab0c5ec447
4
- data.tar.gz: 9f2b047960c4693402380ab3b47bcd7a75681b70f4c093dc7fe41b362850e041
3
+ metadata.gz: c2184d616ba0f1a7832a898adbe23ffffea1b5641b1a19bbb92b3c374228c594
4
+ data.tar.gz: 2fc2621373b9425f4c2baf9c49f8a386177658622b5c544e7790b583e6d72f05
5
5
  SHA512:
6
- metadata.gz: 8d0c7fffba49883a57c4434317f35ce285aefabd238c0bbf51b438e75f65650261194bed363223ab1ac0341c28567f57c088586208a1b0be106a97e680c767a7
7
- data.tar.gz: b5632ff874c87f3b61d800ef06a87f9e72cb92a0ea417865440149899191444a44a613a358016c7b984fbd298d9086331c050567f76dce4c69d8fba6494378a5
6
+ metadata.gz: 5c72e3d088679ca3da202fba2f85ddb309a0e8a481e24610a39cf884a6d4df6a0937b1b70d6412b5cf76b9c209471f96a424739c30cd65e9ee61df5245b9b8dc
7
+ data.tar.gz: b8216c0075d4d253ee2cb04fe261582bfd8d1f8c0ac46c905342509ceb179a223de6a4f35eb3de307c8a7e8e831c7a5e4c6535207508d9abbafc30977ef6ddbc
@@ -19,6 +19,16 @@ module Mumukit::Auth
19
19
  other.class == self.class && to_s == other.to_s
20
20
  end
21
21
 
22
+ alias_method :eql?, :==
23
+
24
+ def hash
25
+ to_s.hash
26
+ end
27
+
28
+ def inspect
29
+ "<Mumukit::Auth::Grant #{to_s}>"
30
+ end
31
+
22
32
  def self.parse(pattern)
23
33
  case pattern
24
34
  when '*' then
@@ -64,7 +64,12 @@ class Mumukit::Auth::Permissions
64
64
  def self.parse(hash)
65
65
  return new if hash.blank?
66
66
 
67
- new(Hash[hash.map { |role, grants| [role, Mumukit::Auth::Scope.parse(grants)] }])
67
+ new(hash.map { |role, grants| [role, Mumukit::Auth::Scope.parse(grants)] }.to_h)
68
+ end
69
+
70
+ def self.reparse(something)
71
+ something ||= {}
72
+ parse(something.to_h)
68
73
  end
69
74
 
70
75
  def self.load(json)
@@ -84,10 +89,36 @@ class Mumukit::Auth::Permissions
84
89
  diff.all? { |role, grant| has_permission?(role, grant) }
85
90
  end
86
91
 
92
+ def protect_permissions_assignment!(other, previous)
93
+ raise Mumukit::Auth::UnauthorizedAccessError unless assign_to?(self.class.reparse(other), previous)
94
+ end
95
+
87
96
  def as_set
88
97
  Set.new scopes.flat_map { |role, scope| scope.grants.map {|grant| [role, grant]} }
89
98
  end
90
99
 
100
+ def ==(other)
101
+ self.class == other.class && self.scopes == other.scopes
102
+ end
103
+
104
+ alias_method :eql?, :==
105
+
106
+ def hash
107
+ scopes.hash
108
+ end
109
+
110
+ def to_s
111
+ '!' + scopes.map { |role, scope| "#{role}:#{scope}" }.join(';')
112
+ end
113
+
114
+ def inspect
115
+ "<Mumukit::Auth::Permissions #{to_s}>"
116
+ end
117
+
118
+ def to_h
119
+ as_json
120
+ end
121
+
91
122
  private
92
123
 
93
124
  def has_all_permissions?(role, scope)
@@ -24,10 +24,24 @@ module Mumukit::Auth
24
24
  self.class.new grants + other.grants
25
25
  end
26
26
 
27
+ def ==(other)
28
+ self.class == other.class && self.grants == other.grants
29
+ end
30
+
31
+ alias_method :eql?, :==
32
+
33
+ def hash
34
+ grants.hash
35
+ end
36
+
27
37
  def to_s
28
38
  grants.map(&:to_s).join(':')
29
39
  end
30
40
 
41
+ def inspect
42
+ "<Mumukit::Auth::Scope #{to_s}>"
43
+ end
44
+
31
45
  def present?
32
46
  to_s.present?
33
47
  end
@@ -31,10 +31,20 @@ module Mumukit::Auth
31
31
  self.class == o.class && to_s == o.to_s
32
32
  end
33
33
 
34
+ alias_method :eql?, :==
35
+
36
+ def hash
37
+ to_s.hash
38
+ end
39
+
34
40
  def to_s
35
41
  "#{first}/#{second}"
36
42
  end
37
43
 
44
+ def inspect
45
+ "<Mumukit::Auth::Slug #{to_s}>"
46
+ end
47
+
38
48
  def to_mumukit_slug
39
49
  self
40
50
  end
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Auth
3
- VERSION = '7.3.0'
3
+ VERSION = '7.4.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.3.0
4
+ version: 7.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Leonardo Bulgarelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-06 00:00:00.000000000 Z
11
+ date: 2018-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler