doorkeeper_sso_client 0.4.0 → 0.4.1

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
  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