openstax_accounts 6.1.7 → 6.2.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 +4 -4
- data/app/controllers/openstax/accounts/application_controller.rb +4 -0
- data/app/controllers/openstax/accounts/sessions_controller.rb +8 -15
- data/lib/openstax/accounts/configuration.rb +23 -4
- data/lib/openstax/accounts/version.rb +1 -1
- data/spec/controllers/openstax/accounts/sessions_controller_spec.rb +15 -0
- data/spec/lib/openstax/accounts/configuration_spec.rb +29 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a14d93863001f4a2e859e6512e8a24ef577fa1b2
|
4
|
+
data.tar.gz: e0b513f8258a6dc438246c0e607ec39b7f474b75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46c3dfda5ddfe710b79ff9786b2f5615a07393bf92e7e2d6eec6c8f6ee863d817c68eaaf4f0241dc918ee068a4e23016f950abd38d97e6a5faa6d316d0f31cdf
|
7
|
+
data.tar.gz: a545e7cd3e78e7902078d6e5f50dbea4268987d6abef5ee3524723fa13c799cbd31ed3837a0e2aae33ab8813313239a621cbdc08e4c05227afd12e2454c9ebaa
|
@@ -3,7 +3,7 @@ module OpenStax
|
|
3
3
|
class SessionsController < OpenStax::Accounts::ApplicationController
|
4
4
|
|
5
5
|
def new
|
6
|
-
if
|
6
|
+
if configuration.enable_stubbing?
|
7
7
|
redirect_to dev_accounts_path
|
8
8
|
else
|
9
9
|
store_fallback key: :accounts_return_to, strategies: [:session]
|
@@ -26,17 +26,12 @@ module OpenStax
|
|
26
26
|
def destroy
|
27
27
|
sign_out!
|
28
28
|
|
29
|
-
#
|
30
|
-
#
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
OpenStax::Utilities.generate_url(
|
36
|
-
OpenStax::Accounts.configuration.openstax_accounts_url, "logout"
|
37
|
-
)
|
38
|
-
)
|
39
|
-
end
|
29
|
+
# Unless we are stubbing, we redirect to a configurable URL, which is normally
|
30
|
+
# (or at least eventually) the Accounts logout URL so that users can't sign back
|
31
|
+
# in automagically.
|
32
|
+
redirect_to configuration.enable_stubbing? ?
|
33
|
+
main_app.root_url :
|
34
|
+
configuration.logout_redirect_url(request)
|
40
35
|
end
|
41
36
|
|
42
37
|
def failure
|
@@ -46,9 +41,7 @@ module OpenStax
|
|
46
41
|
|
47
42
|
def profile
|
48
43
|
# TODO: stub profile if stubbing is enabled
|
49
|
-
redirect_to
|
50
|
-
OpenStax::Accounts.configuration.openstax_accounts_url, "/profile"
|
51
|
-
).to_s)
|
44
|
+
redirect_to URI.join(configuration.openstax_accounts_url, "/profile").to_s
|
52
45
|
end
|
53
46
|
|
54
47
|
end
|
@@ -5,6 +5,12 @@ module OpenStax
|
|
5
5
|
# Base URL for OpenStax Accounts
|
6
6
|
attr_reader :openstax_accounts_url
|
7
7
|
|
8
|
+
def openstax_accounts_url=(url)
|
9
|
+
url.gsub!(/https|http/,'https') if !(url =~ /localhost/)
|
10
|
+
url = url + "/" if url[url.size-1] != '/'
|
11
|
+
@openstax_accounts_url = url
|
12
|
+
end
|
13
|
+
|
8
14
|
# openstax_application_id
|
9
15
|
# OAuth client_id received from OpenStax Accounts
|
10
16
|
attr_accessor :openstax_application_id
|
@@ -47,10 +53,22 @@ module OpenStax
|
|
47
53
|
# If more would be returned, the result will be empty instead
|
48
54
|
attr_accessor :max_search_items
|
49
55
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
56
|
+
# logout_redirect_url
|
57
|
+
# A URL to redirect to after the app logs out, can be a string or a Proc.
|
58
|
+
# If a Proc (or lambda), it will be called with the logout request.
|
59
|
+
# If this field is nil or if the Proc returns nil, the logout will redirect
|
60
|
+
# to the default Accounts logout URL.
|
61
|
+
attr_writer :logout_redirect_url
|
62
|
+
|
63
|
+
def logout_redirect_url(request)
|
64
|
+
(@logout_redirect_url.is_a?(Proc) ?
|
65
|
+
@logout_redirect_url.call(request) :
|
66
|
+
@logout_redirect_url) ||
|
67
|
+
default_logout_redirect_url
|
68
|
+
end
|
69
|
+
|
70
|
+
def default_logout_redirect_url
|
71
|
+
URI.join(openstax_accounts_url, "logout").to_s
|
54
72
|
end
|
55
73
|
|
56
74
|
def initialize
|
@@ -66,6 +84,7 @@ module OpenStax
|
|
66
84
|
@account_user_mapper = OpenStax::Accounts::DefaultAccountUserMapper
|
67
85
|
@min_search_characters = 3
|
68
86
|
@max_search_items = 10
|
87
|
+
@logout_redirect_url = nil
|
69
88
|
super
|
70
89
|
end
|
71
90
|
|
@@ -8,6 +8,10 @@ module OpenStax::Accounts
|
|
8
8
|
username: 'some_user',
|
9
9
|
openstax_uid: 10 }
|
10
10
|
|
11
|
+
after(:all) {
|
12
|
+
OpenStax::Accounts.configuration.logout_redirect_url = nil
|
13
|
+
}
|
14
|
+
|
11
15
|
it 'should redirect users to the login path' do
|
12
16
|
c = controller
|
13
17
|
get :new
|
@@ -27,5 +31,16 @@ module OpenStax::Accounts
|
|
27
31
|
expect(controller.current_account).to eq(AnonymousAccount.instance)
|
28
32
|
expect(controller.current_account.is_anonymous?).to eq(true)
|
29
33
|
end
|
34
|
+
|
35
|
+
it 'should get signout redirect URL from configured setting' do
|
36
|
+
my_lambda = ->(request) { "http://www.google.com" }
|
37
|
+
OpenStax::Accounts.configuration.logout_redirect_url = my_lambda
|
38
|
+
|
39
|
+
allow(OpenStax::Accounts.configuration).to receive(:enable_stubbing?) {false}
|
40
|
+
expect(my_lambda).to receive(:call).with(anything())
|
41
|
+
|
42
|
+
controller.sign_in account
|
43
|
+
delete :destroy
|
44
|
+
end
|
30
45
|
end
|
31
46
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module OpenStax
|
2
|
+
module Accounts
|
3
|
+
describe Configuration do
|
4
|
+
|
5
|
+
let!(:config) { Configuration.new.tap {|c| c.openstax_accounts_url = "https://accounts.openstax.org"} }
|
6
|
+
let!(:a_fake_request) { OpenStruct.new(url: "http://foo.com") }
|
7
|
+
|
8
|
+
it "returns the default logout redirect when no explicit URL is set" do
|
9
|
+
expect(config.logout_redirect_url(a_fake_request)).to eq "https://accounts.openstax.org/logout"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "returns an explicitly-set string logout redirect URL when set" do
|
13
|
+
config.logout_redirect_url = "blah"
|
14
|
+
expect(config.logout_redirect_url(a_fake_request)).to eq "blah"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "returns the default URL when Proc logout redirect URL set and returns nil" do
|
18
|
+
config.logout_redirect_url = ->(request) { nil }
|
19
|
+
expect(config.logout_redirect_url(a_fake_request)).to eq "https://accounts.openstax.org/logout"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns the Proc URL when Proc logout redirect URL set and returns non-nil" do
|
23
|
+
config.logout_redirect_url = ->(request) { "howdy" }
|
24
|
+
expect(config.logout_redirect_url(a_fake_request)).to eq "howdy"
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstax_accounts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Slavinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -304,6 +304,20 @@ dependencies:
|
|
304
304
|
- - ">="
|
305
305
|
- !ruby/object:Gem::Version
|
306
306
|
version: '0'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: byebug
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - ">="
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '0'
|
314
|
+
type: :development
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - ">="
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '0'
|
307
321
|
description: This gem allows Rails apps to easily access the API's and login infrastructure
|
308
322
|
of OpenStax Accounts.
|
309
323
|
email:
|
@@ -444,6 +458,7 @@ files:
|
|
444
458
|
- spec/handlers/openstax/accounts/accounts_search_spec.rb
|
445
459
|
- spec/handlers/openstax/accounts/dev/accounts_search_spec.rb
|
446
460
|
- spec/lib/openstax/accounts/api_spec.rb
|
461
|
+
- spec/lib/openstax/accounts/configuration_spec.rb
|
447
462
|
- spec/lib/openstax/accounts/current_user_manager_spec.rb
|
448
463
|
- spec/lib/openstax/accounts/has_many_through_groups/active_record/base_spec.rb
|
449
464
|
- spec/models/openstax/accounts/account_spec.rb
|
@@ -544,6 +559,7 @@ test_files:
|
|
544
559
|
- spec/handlers/openstax/accounts/accounts_search_spec.rb
|
545
560
|
- spec/handlers/openstax/accounts/dev/accounts_search_spec.rb
|
546
561
|
- spec/lib/openstax/accounts/api_spec.rb
|
562
|
+
- spec/lib/openstax/accounts/configuration_spec.rb
|
547
563
|
- spec/lib/openstax/accounts/current_user_manager_spec.rb
|
548
564
|
- spec/lib/openstax/accounts/has_many_through_groups/active_record/base_spec.rb
|
549
565
|
- spec/models/openstax/accounts/account_spec.rb
|