mumukit-auth 7.6.1 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
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