mumukit-login 6.1.9 → 7.3.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: 98a58c54fb727d1043865ff9a80c288e9db0d3c5a86e07135f5296f54edc8682
4
- data.tar.gz: eea9e88bedd8e22cc6567179a7b68324d93d653214110f6791662a5db1bb1b1a
3
+ metadata.gz: 03d86c08686a70a40b6b3395cfc566d7b1f210289525716f3c5413cd60977704
4
+ data.tar.gz: 983a7c19738beb01b0a23f8c03e7bd98dc6ca51d983a26179d4019f3b1a83b85
5
5
  SHA512:
6
- metadata.gz: 1782e1f6a12158a45fdf133ff570f395cdb552a93207768d7fb14c98fa003153f67e8ba10aa5e52940ab7ee24e70be832b2c7e897774c8a6cecb313e5c0f792d
7
- data.tar.gz: 220ece34cddbbad92765a620014d44e66c5a97ee79a09e10fda03efee41e1059e3fc5a65b967b295c6a1275aecf689ca15dc332836f986ded2db15328ef6d14c
6
+ metadata.gz: 3868084c92bef7ba72a7eb6289229adad904eeb932206cc23f46f2be0d738d3fbdbc72d2adf66515018f615680b1cd06c0ab398a134bfcbb8819888ba4593f35
7
+ data.tar.gz: 6b15059270ff67d166129a95e3f8930f5c00f5bb457bd8c9c04dcba0a50f28814f0faf3786781fdfc38689c55b815ef86ba56e933cd62e3762d22282279a4c57
@@ -1,3 +1,5 @@
1
1
  require_relative './helpers/authentication_helpers'
2
2
  require_relative './helpers/authorization_helpers'
3
3
  require_relative './helpers/login_controller_helpers'
4
+ require_relative './helpers/organization_helpers'
5
+ require_relative './helpers/login_settings_helpers'
@@ -1,7 +1,7 @@
1
1
  module Mumukit::Login::LoginControllerHelpers
2
2
 
3
3
  def login_current_user!
4
- mumukit_controller.write_cookie!(:login_organization, organization_name)
4
+ mumukit_controller.mucookie.write!(:login_organization, organization_name)
5
5
  origin_redirector.save_after_login_location!
6
6
  if current_user?
7
7
  origin_redirector.redirect_after_login!
@@ -0,0 +1,13 @@
1
+ module Mumukit::Login::LoginSettingsHelpers
2
+ def login_settings
3
+ @login_settings ||= Mumukit::Login::Settings.new(login_methods)
4
+ end
5
+
6
+ def customized_login_methods?
7
+ login_methods.size < Mumukit::Login::Settings.login_methods.size
8
+ end
9
+
10
+ def inconsistent_public_login?
11
+ customized_login_methods? && public?
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ module Mumukit::Login::OrganizationHelpers
2
+ def login_provider_object
3
+ @login_provider_object ||= login_provider.try { |it| Mumukit::Login::Provider.parse_login_provider it }
4
+ end
5
+ end
@@ -6,10 +6,10 @@ class Mumukit::Login::Mucookie
6
6
  end
7
7
 
8
8
  def write!(key, value, options={})
9
- @controller.write_cookie! cookie_name(key),
10
- spec.merge(
11
- value: value.to_s,
12
- httponly: !!options[:httponly])
9
+ do_write! cookie_name(key),
10
+ spec.merge(
11
+ value: value.to_s,
12
+ httponly: !!options[:httponly])
13
13
  end
14
14
 
15
15
  def encrypt_and_write!(key, value, options={})
@@ -21,7 +21,7 @@ class Mumukit::Login::Mucookie
21
21
  end
22
22
 
23
23
  def read(key)
24
- @controller.read_cookie cookie_name(key)
24
+ do_read!(cookie_name(key))
25
25
  end
26
26
 
27
27
  def decrypt_and_read(key)
@@ -33,17 +33,43 @@ class Mumukit::Login::Mucookie
33
33
  end
34
34
 
35
35
  def delete!(key)
36
- @controller.delete_cookie! cookie_name(key), Mumukit::Login.config.mucookie_domain
36
+ do_delete! cookie_name(key), Mumukit::Login.config.mucookie_domain
37
37
  end
38
38
 
39
39
  def spec
40
- { path: '/',
40
+ {
41
+ path: '/',
41
42
  expires: Mumukit::Login.config.mucookie_duration.days.since,
42
- domain: Mumukit::Login.config.mucookie_domain }
43
+ domain: Mumukit::Login.config.mucookie_domain
44
+ }
45
+ end
46
+
47
+ def self.cookie_same_site
48
+ if %w(RACK_ENV RAILS_ENV).any? { |it| ENV[it] == 'production' }
49
+ :none
50
+ else
51
+ :lax
52
+ end
43
53
  end
44
54
 
45
55
  private
46
56
 
57
+ # Support for legacy browsers
58
+ # Duplicate write / read / delete cookies without samesite for old browsers that do not allow for SameSite=None attribute
59
+ def do_write!(cookie_name, spec)
60
+ @controller.write_cookie! cookie_name, spec.merge(same_site: self.class.cookie_same_site)
61
+ @controller.write_cookie! "#{cookie_name}_legacy", spec
62
+ end
63
+
64
+ def do_delete!(cookie_name, domain)
65
+ @controller.delete_cookie! cookie_name, domain
66
+ @controller.delete_cookie! "#{cookie_name}_legacy", domain
67
+ end
68
+
69
+ def do_read!(cookie_name)
70
+ @controller.read_cookie(cookie_name) || @controller.read_cookie("#{cookie_name}_legacy")
71
+ end
72
+
47
73
  def cookie_name(key)
48
74
  "mucookie_#{key}"
49
75
  end
@@ -84,5 +110,6 @@ class Mumukit::Login::Mucookie
84
110
  value.try { |it| encryptor.decrypt_and_verify it }
85
111
  end
86
112
  end
87
-
88
113
  end
114
+
115
+ require_relative 'mucookie/store'
@@ -0,0 +1,14 @@
1
+ require 'action_dispatch'
2
+
3
+ class Mumukit::Login::Mucookie::Store < ActionDispatch::Session::CookieStore
4
+ def set_cookie(request, session_id, cookie)
5
+ cookie.merge! same_site: :none if on_embeddable_organization?(request)
6
+ super
7
+ end
8
+
9
+ private
10
+
11
+ def on_embeddable_organization?(request)
12
+ Mumukit::Platform::Organization.find_by_name!(request.cookies['mucookie_login_organization']).embeddable? rescue false
13
+ end
14
+ end
@@ -58,12 +58,6 @@ module Mumukit::Login::Provider
58
58
  end
59
59
  end
60
60
 
61
- module Mumukit::Platform::Organization::Helpers
62
- def login_provider_object
63
- @login_provider_object ||= login_provider.try { |it| Mumukit::Login::Provider.parse_login_provider it }
64
- end
65
- end
66
-
67
61
  require_relative './provider/base'
68
62
 
69
63
  Mumukit::Login::Provider.enabled_providers.each do |it|
@@ -82,7 +82,7 @@ class Mumukit::Login::Provider::Base
82
82
  end
83
83
 
84
84
  def setup_phase_login_organization_name(env)
85
- Rack::Request.new(env).cookies['login_organization']
85
+ Rack::Request.new(env).cookies['mucookie_login_organization']
86
86
  end
87
87
 
88
88
  def organization_login_settings_for(name)
@@ -75,17 +75,3 @@ class Mumukit::Login::Settings
75
75
  [:user_pass]
76
76
  end
77
77
  end
78
-
79
- class Mumukit::Platform::Organization::Settings < Mumukit::Platform::Model
80
- def login_settings
81
- @login_settings ||= Mumukit::Login::Settings.new(login_methods)
82
- end
83
-
84
- def customized_login_methods?
85
- login_methods.size < Mumukit::Login::Settings.login_methods.size
86
- end
87
-
88
- def inconsistent_public_login?
89
- customized_login_methods? && public?
90
- end
91
- end
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Login
3
- VERSION = '6.1.9'
3
+ VERSION = '7.3.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit-login
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.9
4
+ version: 7.3.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-04-16 00:00:00.000000000 Z
11
+ date: 2020-06-04 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: '3'
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: '3'
54
+ version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: codeclimate-test-reporter
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.5'
89
+ version: '2.1'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.5'
96
+ version: '2.1'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: jwt
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -224,22 +224,30 @@ dependencies:
224
224
  name: mumukit-platform
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: '2.6'
230
- - - "<"
227
+ - - "~>"
231
228
  - !ruby/object:Gem::Version
232
- version: '5'
229
+ version: '5.0'
233
230
  type: :runtime
234
231
  prerelease: false
235
232
  version_requirements: !ruby/object:Gem::Requirement
236
233
  requirements:
237
- - - ">="
234
+ - - "~>"
238
235
  - !ruby/object:Gem::Version
239
- version: '2.6'
240
- - - "<"
236
+ version: '5.0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: actionpack
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '5.1'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
241
249
  - !ruby/object:Gem::Version
242
- version: '5'
250
+ version: '5.1'
243
251
  description:
244
252
  email:
245
253
  - franco@mumuki.org
@@ -260,7 +268,10 @@ files:
260
268
  - lib/mumukit/login/helpers/authentication_helpers.rb
261
269
  - lib/mumukit/login/helpers/authorization_helpers.rb
262
270
  - lib/mumukit/login/helpers/login_controller_helpers.rb
271
+ - lib/mumukit/login/helpers/login_settings_helpers.rb
272
+ - lib/mumukit/login/helpers/organization_helpers.rb
263
273
  - lib/mumukit/login/mucookie.rb
274
+ - lib/mumukit/login/mucookie/store.rb
264
275
  - lib/mumukit/login/origin_redirector.rb
265
276
  - lib/mumukit/login/profile.rb
266
277
  - lib/mumukit/login/provider.rb
@@ -294,7 +305,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
294
305
  - !ruby/object:Gem::Version
295
306
  version: '0'
296
307
  requirements: []
297
- rubygems_version: 3.0.3
308
+ rubyforge_project:
309
+ rubygems_version: 2.7.7
298
310
  signing_key:
299
311
  specification_version: 4
300
312
  summary: Library for login mumuki requests