doorkeeper_sso_client 0.4.0 → 0.4.1

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
  SHA1:
3
- metadata.gz: de2665ad3f5e0134f533f0f1f372e47283286e45
4
- data.tar.gz: 04fe335ebe3c4bb15c5a0d24059926c47efaac58
3
+ metadata.gz: c321fedf6edd15e3f7f979602f0979832ba98a84
4
+ data.tar.gz: 684b0ee93c3c822b2db4ddf903f311286db97db3
5
5
  SHA512:
6
- metadata.gz: 81c42da53e7dd63163dbc736f8cf1e6be92a020accc7307630081a74b62adf2ed598e2da8c60113d1d9423f6017a606f6c79ef4a64ad063e094d22c71c48629a
7
- data.tar.gz: e7e99d711c781c6c6e2f5011dc73bfffe7a758f5b6bf3c8cb990307083b4680017485e99492e91a20daf3bbff22b16871587f0a2571f6fe4500ff16d4c05607d
6
+ metadata.gz: 86a14ac441a7d2f158bb72491318c675b17cff4d1559514379a29a24acccf58225b2635ac2fe1bda8ffc9fb69ee9e9b7da6959d4e9f8f9fb28641e88c0186b87
7
+ data.tar.gz: 5d7f14243016bf9e5d0708c50dc1fec4f004ecc476034aaca2999564c80f87b8b518b3b47d8bc53d355206db3bf183d461de2d3731b533791c3995aefaf3b914
@@ -8,28 +8,41 @@ module DoorkeeperSsoClient
8
8
  def activate_sso(scope, options = {})
9
9
  class_eval <<-METHODS, __FILE__, __LINE__ + 1
10
10
  def validate_passport!
11
- if #{scope}_signed_in?
12
- sign_out(current_#{scope}) unless current_#{scope}.passports.find_by_uid(session['passport_id']).try(:active?)
11
+ if #{scope}_signed_in? and !current_#{scope}.passports.find_by_uid(session['passport_id']).try(:active?)
12
+ sign_out(current_#{scope})
13
13
  end
14
14
  return true
15
15
  end
16
16
 
17
17
  def after_sign_out_path_for(resource_or_scope)
18
- scope = ::Devise::Mapping.find_scope!(resource_or_scope)
19
- if scope == :#{scope}
20
- return File.join( DoorkeeperSsoClient::Config.base_uri, "logout?app_id=" + DoorkeeperSsoClient::Config.oauth_client_id.to_s )
21
- end
18
+ return File.join( DoorkeeperSsoClient::Config.base_uri, "logout?app_id=" + DoorkeeperSsoClient::Config.oauth_client_id.to_s ) if scope_match? resource_or_scope, :#{scope}
22
19
  super
23
20
  end
24
21
 
25
22
  def after_sign_in_path_for(resource_or_scope)
26
- scope = ::Devise::Mapping.find_scope!(resource_or_scope)
27
- if scope == :#{scope}
23
+ if scope_match? resource_or_scope, :#{scope}
28
24
  request.env['omniauth.origin'] || super
29
25
  else
30
26
  super
31
27
  end
32
28
  end
29
+
30
+ def sign_out(resource_or_scope=nil)
31
+ if scope_match? resource_or_scope, :#{scope}
32
+ session['passport_id'] = nil
33
+ end
34
+ super
35
+ end
36
+
37
+ def sign_out_all_scopes(lock=true)
38
+ session['passport_id'] = nil
39
+ super
40
+ end
41
+
42
+ def scope_match?(resource_or_scope, scope_sym)
43
+ scope = ::Devise::Mapping.find_scope!(resource_or_scope)
44
+ return scope == scope_sym
45
+ end
33
46
  METHODS
34
47
 
35
48
  unless options[:skip_devise_hook]
@@ -1,3 +1,3 @@
1
1
  module DoorkeeperSsoClient
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -47,7 +47,7 @@ module OmniAuth
47
47
 
48
48
  def call_app!
49
49
  create_passport
50
- session[:passport_id] = passport_info["id"]
50
+ session[:passport_id] = env['omniauth.auth']['extra']['passport_id']
51
51
  super
52
52
  end
53
53
 
@@ -70,6 +70,34 @@ RSpec.describe "DoorkeeperSsoClient::Mixins::Devise::ControllerHelpers DeviseHoo
70
70
  end
71
71
  end
72
72
 
73
+
74
+ describe "#sign_out" do
75
+ context "user scope" do
76
+ before(:each) { controller.sign_out(:user) }
77
+ it "removes session['passport_id']" do
78
+ expect(controller.session['passport_id']).to be_nil
79
+ end
80
+ end
81
+
82
+ context "other_scope" do
83
+ before(:each) do
84
+ @request.env["devise.mapping"] = Devise.mappings[:admin]
85
+ sign_in :admin, Fabricate(:user)
86
+ controller.sign_out :admin
87
+ end
88
+ it "keeps session['passport_id']" do
89
+ expect(controller.session['passport_id']).to eq passport.uid
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "#sign_out_all_scopes" do
95
+ before(:each) { controller.sign_out_all_scopes }
96
+ it "removes session['passport_id']" do
97
+ expect(controller.session['passport_id']).to be_nil
98
+ end
99
+ end
100
+
73
101
  end
74
102
 
75
103
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doorkeeper_sso_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Wong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-14 00:00:00.000000000 Z
11
+ date: 2015-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: api-auth
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.1
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rails
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +122,6 @@ dependencies:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: 0.0.3
111
- - !ruby/object:Gem::Dependency
112
- name: api-auth
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 1.3.1
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 1.3.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: database_cleaner
127
127
  requirement: !ruby/object:Gem::Requirement