mumukit-auth 7.6.1 → 7.10.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: dc16320fa7c0766234a7fdeb72d8d72c35a0cdfc6958047b9c9c4ca914e25cdd
4
- data.tar.gz: bffbe73adfd28218177ffbc45e7a0ffe9eee3423515bfe9187e6e252769102ea
3
+ metadata.gz: 517de6c84d1b25e0b31a83da4dbf8f0d5c234eb05c9c23476d2e721fa19b6049
4
+ data.tar.gz: 3e2ae789e5dff9857e63f298c126fffe69a815b63649fdf1b7346c18f583e29a
5
5
  SHA512:
6
- metadata.gz: a61f937372d9309e2ed7a39e47d91262e0708b0fbeca8f8b4db34f43b3d45a1750c7e61c6ac8854e306896cff1342b4092b64e2b686e4473cc5df0689c58d62f
7
- data.tar.gz: 2338aa6727863a3d6a100aa25bf97c5c2c2286d2ec68f7444d644a6a32472b399823ea2269ca243842212eb769d70901900d53c93336e2fb0764abf8869b03f4
6
+ metadata.gz: c28eac074b926567be11f09700623e3fdbd9eb1379ba22c794f87f3b06fd901fb5bb9cb436e56fbbb0985a55bb708651a9632003e4ea3849cb43408d61038717
7
+ data.tar.gz: 253cc4b87c062b9e97e4ba350fbcef2922c198c396cea345675b490532d7b1528ade0d257cc872cc663cf47cd374b9338a5c3a656b62daaea298bce5c7927892
@@ -7,6 +7,8 @@ end
7
7
 
8
8
  module Mumukit::Auth
9
9
  class Grant
10
+ delegate :organization, to: :to_mumukit_slug
11
+
10
12
  def as_json(options={})
11
13
  to_s
12
14
  end
@@ -41,8 +41,16 @@ class Mumukit::Auth::Permissions
41
41
  granted_organizations_for :student
42
42
  end
43
43
 
44
+ def any_granted_organizations
45
+ scopes.values.flat_map(&:grants).map(&:organization).to_set
46
+ end
47
+
48
+ def any_granted_roles
49
+ scopes.select { |_, scope| scope.present? }.keys.to_set
50
+ end
51
+
44
52
  def granted_organizations_for(role)
45
- scope_for(role)&.grants&.map { |grant| grant.to_mumukit_slug.organization }.to_set
53
+ scope_for(role)&.grants&.map(&:organization).to_set
46
54
  end
47
55
 
48
56
  def add_permission!(role, *grants)
@@ -41,12 +41,18 @@ module Mumukit::Auth
41
41
  parent :editor
42
42
  end
43
43
  class Editor < Role
44
- parent :owner
44
+ parent :admin
45
45
  end
46
46
  class Janitor < Role
47
- parent :owner
47
+ parent :admin
48
48
  end
49
49
  class Moderator < Role
50
+ parent :forum_supervisor
51
+ end
52
+ class ForumSupervisor < Role
53
+ parent :admin
54
+ end
55
+ class Admin < Role
50
56
  parent :owner
51
57
  end
52
58
  class Owner < Role
@@ -57,4 +63,4 @@ module Mumukit::Auth
57
63
  end
58
64
  end
59
65
  end
60
- end
66
+ end
@@ -1,6 +1,6 @@
1
1
  module Mumukit::Auth
2
2
  module Roles
3
- ROLES = [:student, :teacher, :headmaster, :writer, :editor, :janitor, :moderator, :owner]
3
+ ROLES = [:student, :teacher, :headmaster, :writer, :editor, :janitor, :moderator, :forum_supervisor, :admin, :owner]
4
4
 
5
5
  ROLES.each do |role|
6
6
  define_method "#{role}?" do |scope = Mumukit::Auth::Slug.any|
@@ -51,8 +51,8 @@ module Mumukit::Auth
51
51
  end
52
52
 
53
53
  def normalize!
54
- @first = @first.downcase
55
- @second = @second.downcase
54
+ @first = normalize_part @first
55
+ @second = normalize_part @second
56
56
  self
57
57
  end
58
58
 
@@ -104,12 +104,16 @@ module Mumukit::Auth
104
104
 
105
105
  private
106
106
 
107
+ def normalize_part(slug_part)
108
+ slug_part.split('.').map(&:parameterize).join('.')
109
+ end
110
+
107
111
  def match(pattern, part)
108
112
  pattern == '_' || pattern == part
109
113
  end
110
114
 
111
115
  def self.validate_slug!(slug)
112
- unless slug =~ /.*\/.*/
116
+ unless slug =~ /\A[^\/\n]+\/[^\/\n]+\z/
113
117
  raise Mumukit::Auth::InvalidSlugFormatError, "Invalid slug: #{slug}. It must be in first/second format"
114
118
  end
115
119
  end
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Auth
3
- VERSION = '7.6.1'
3
+ VERSION = '7.10.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.6.1
4
+ version: 7.10.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: 2019-03-06 00:00:00.000000000 Z
11
+ date: 2021-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '12.3'
34
34
  type: :development
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: '10.0'
40
+ version: '12.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2'
47
+ version: '3.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2'
54
+ version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jwt
57
57
  requirement: !ruby/object:Gem::Requirement