hubssolib 2.1.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +57 -0
- data/Gemfile.lock +48 -25
- data/README.md +15 -22
- data/hubssolib.gemspec +11 -8
- data/lib/hub_sso_lib.rb +93 -16
- metadata +44 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36b026e98baa7f70c200a5abe0ff7e5e3a874e9aaf5a1f88c33114e45cb1ab14
|
4
|
+
data.tar.gz: d19ff3d675d0b63286e06c03b6c3bce05be434a16f554533efde1152bb9c2641
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8d0724e454ffab27e616a91b1aa9837d4aefa5dff6d871bb92671ddefda789626e7cf3ed2dc523b48d4a09bcb3210c81ff279c7e553d2d579c8b00d6af693dd
|
7
|
+
data.tar.gz: 36f17712168ba66f8de41193c41959dfa3ddb81e1ae5c683f4f747d177a6e4f5643aee2a8b387eaa244f0945608ee88f70552143f58f344e2a4078dabbf65ea4
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,58 @@
|
|
1
|
+
## 3.0.0, 28-Jan-2025 and 3.0.1, 03-Feb-2025
|
2
|
+
|
3
|
+
* The Hub "login indication" URL approach is now dropped, so layout templates **should be updated.**
|
4
|
+
|
5
|
+
In Hub v1 and v2, login indication was done via an image that was served by the Hub application itself, wrapped in a link that visited a "conditional login" endpoint which stored the return-to URL, ensured HTTPS was in use and visited either the log in, or log out page as required. In client applications it looked a bit like this:
|
6
|
+
|
7
|
+
```html
|
8
|
+
<a class="img" href="<%= ENV['HUB_PATH_PREFIX'] %>/account/login_conditional">
|
9
|
+
<img src="<%= ENV['HUB_PATH_PREFIX'] %>/account/login_indication" alt="Account" height="22" width="90" />
|
10
|
+
</a>
|
11
|
+
```
|
12
|
+
|
13
|
+
This dates back to a time when CSS support was not that widespread and RISC OS Open needed the web site to work well on web browsers available at the time. Things have improved considerably since then, so now a cleaner, pure CSS solution is used. This requires no image fetch via the Hub application. Just use:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
<%= hubssolib_account_link() %>
|
17
|
+
```
|
18
|
+
|
19
|
+
...in place of the markup above. You probably want to add some supporting CSS too; for example:
|
20
|
+
|
21
|
+
```css
|
22
|
+
#hubssolib_login_indication a#hubssolib_logged_in_link,
|
23
|
+
#hubssolib_login_indication a#hubssolib_logged_out_link {
|
24
|
+
display: block;
|
25
|
+
text-align: center;
|
26
|
+
text-decoration: none;
|
27
|
+
font: sans-serif;
|
28
|
+
font-size: 10pt;
|
29
|
+
line-height: 20px;
|
30
|
+
height: 20px;
|
31
|
+
width: 88px;
|
32
|
+
border: 1px solid #ccc;
|
33
|
+
}
|
34
|
+
|
35
|
+
#hubssolib_login_indication a#hubssolib_logged_in_link {
|
36
|
+
color: #050;
|
37
|
+
border-color: #050;
|
38
|
+
background: #efe;
|
39
|
+
}
|
40
|
+
|
41
|
+
#hubssolib_login_indication a#hubssolib_logged_out_link {
|
42
|
+
color: #500;
|
43
|
+
border-color: #500;
|
44
|
+
background: #fee;
|
45
|
+
}
|
46
|
+
|
47
|
+
#hubssolib_login_indication a#hubssolib_login_noscript {
|
48
|
+
text-decoration: none;
|
49
|
+
}
|
50
|
+
```
|
51
|
+
|
52
|
+
Version 3.0.1 patches the system to make sure that the correct current login state is shown even if a browser has a page cached. To achieve this, JavaScript is used to check cookie state and update the indication on-the-fly. There is a `noscript` fallback that uses the old, inefficient `login_indication` image mechanism - just in case. The CSS styles above are designed to match those images, though of course, they certainly don't have to!
|
53
|
+
|
54
|
+
|
55
|
+
|
1
56
|
## 2.1.0, 01-Jul-2022
|
2
57
|
|
3
58
|
* Use `HUB_QUIET_SERVER=yes ...` to quieten `$stdout` output from Hub server.
|
@@ -5,6 +60,8 @@
|
|
5
60
|
* Maintenance `bundle update`.
|
6
61
|
* A few minor tidy-ups in the implementation.
|
7
62
|
|
63
|
+
|
64
|
+
|
8
65
|
## Version 1.0.0 -> Version 2.0.0, 19-Apr-2020
|
9
66
|
|
10
67
|
The public interface to applications is generally unchanged, but the cookie storage mechanism has been improved and is not compatible with v1 of Hub. You will need to use the newer Hub application, server and gem, but hopefully will find you don't need to change anything with your integrated applications.
|
data/Gemfile.lock
CHANGED
@@ -1,46 +1,69 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hubssolib (
|
4
|
+
hubssolib (3.0.1)
|
5
|
+
base64 (~> 0.2)
|
6
|
+
drb (~> 2.2)
|
5
7
|
|
6
8
|
GEM
|
7
9
|
remote: https://rubygems.org/
|
8
10
|
specs:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
rspec-
|
18
|
-
|
19
|
-
|
20
|
-
|
11
|
+
base64 (0.2.0)
|
12
|
+
date (3.4.1)
|
13
|
+
debug (1.10.0)
|
14
|
+
irb (~> 1.10)
|
15
|
+
reline (>= 0.3.8)
|
16
|
+
diff-lcs (1.5.1)
|
17
|
+
docile (1.4.1)
|
18
|
+
doggo (1.4.0)
|
19
|
+
rspec-core (~> 3.13)
|
20
|
+
drb (2.2.1)
|
21
|
+
io-console (0.8.0)
|
22
|
+
irb (1.15.1)
|
23
|
+
pp (>= 0.6.0)
|
24
|
+
rdoc (>= 4.0.0)
|
25
|
+
reline (>= 0.4.2)
|
26
|
+
pp (0.6.2)
|
27
|
+
prettyprint
|
28
|
+
prettyprint (0.2.0)
|
29
|
+
psych (5.2.3)
|
30
|
+
date
|
31
|
+
stringio
|
32
|
+
rdoc (6.11.0)
|
33
|
+
psych (>= 4.0.0)
|
34
|
+
reline (0.6.0)
|
35
|
+
io-console (~> 0.5)
|
36
|
+
rspec (3.13.0)
|
37
|
+
rspec-core (~> 3.13.0)
|
38
|
+
rspec-expectations (~> 3.13.0)
|
39
|
+
rspec-mocks (~> 3.13.0)
|
40
|
+
rspec-core (3.13.2)
|
41
|
+
rspec-support (~> 3.13.0)
|
42
|
+
rspec-expectations (3.13.3)
|
21
43
|
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
-
rspec-support (~> 3.
|
23
|
-
rspec-mocks (3.
|
44
|
+
rspec-support (~> 3.13.0)
|
45
|
+
rspec-mocks (3.13.2)
|
24
46
|
diff-lcs (>= 1.2.0, < 2.0)
|
25
|
-
rspec-support (~> 3.
|
26
|
-
rspec-support (3.
|
27
|
-
simplecov (0.
|
47
|
+
rspec-support (~> 3.13.0)
|
48
|
+
rspec-support (3.13.2)
|
49
|
+
simplecov (0.22.0)
|
28
50
|
docile (~> 1.1)
|
29
51
|
simplecov-html (~> 0.11)
|
30
52
|
simplecov_json_formatter (~> 0.1)
|
31
|
-
simplecov-html (0.
|
53
|
+
simplecov-html (0.13.1)
|
32
54
|
simplecov_json_formatter (0.1.4)
|
55
|
+
stringio (3.1.2)
|
33
56
|
|
34
57
|
PLATFORMS
|
35
58
|
ruby
|
36
59
|
|
37
60
|
DEPENDENCIES
|
38
|
-
|
39
|
-
doggo (~> 1.
|
61
|
+
debug (~> 1.1)
|
62
|
+
doggo (~> 1.4)
|
40
63
|
hubssolib!
|
41
|
-
rspec (~> 3.
|
42
|
-
rspec-mocks (~> 3.
|
43
|
-
simplecov (~> 0.
|
64
|
+
rspec (~> 3.13)
|
65
|
+
rspec-mocks (~> 3.13)
|
66
|
+
simplecov (~> 0.22)
|
44
67
|
|
45
68
|
BUNDLED WITH
|
46
|
-
2.
|
69
|
+
2.6.2
|
data/README.md
CHANGED
@@ -24,28 +24,10 @@ The latest version of the Hub gem source code is available at:
|
|
24
24
|
|
25
25
|
### The Hub library gem
|
26
26
|
|
27
|
-
First of all, download and unpack the Hub gem sources. Change into the source directory (usually, `rails/gems/hubssolib`) and build with:
|
28
|
-
|
29
|
-
```sh
|
30
|
-
gem build hubssolib.gemspec
|
31
|
-
```
|
32
|
-
|
33
|
-
Install the Hub gem using the `gem` command in the usual fashion. For example, for version 1.0.0 of the library, issue the following command:
|
34
|
-
|
35
|
-
```sh
|
36
|
-
gem install hubssolib-1.0.0.gem
|
37
|
-
```
|
38
|
-
|
39
|
-
If you run multiple gem repositories you can instruct `gem` to install into a specific location using the `--install-dir` command line switch:
|
40
|
-
|
41
|
-
```sh
|
42
|
-
gem install hubssolib-1.0.0.gem --install-dir=/home/username/gems
|
43
|
-
```
|
44
|
-
|
45
27
|
Include in a project by adding this to your `Gemfile`:
|
46
28
|
|
47
29
|
```ruby
|
48
|
-
gem 'hubssolib', '~>
|
30
|
+
gem 'hubssolib', '~> 3.0', require: 'hub_sso_lib'
|
49
31
|
```
|
50
32
|
|
51
33
|
### The DRb server
|
@@ -55,7 +37,7 @@ The Hub DRb server consists of a small wrapper Ruby script which does most of it
|
|
55
37
|
```sh
|
56
38
|
HUB_CONNECTION_URI="drbunix:/home/username/sockets/.hub_drb"
|
57
39
|
export HUB_CONNECTION_URI
|
58
|
-
ruby /home/username/
|
40
|
+
ruby /home/username/hubssolib/hub_sso_server.rb &
|
59
41
|
```
|
60
42
|
|
61
43
|
The default is to use a file `.hub_drb` in the root of the current user's home directory. If you specify a custom URI, note that it _MUST_ start with `drbunix:`; the hub server must not be run on an IP port for security reasons.
|
@@ -66,7 +48,7 @@ Finally you can install the Hub application using whatever mechanism you prefer
|
|
66
48
|
|
67
49
|
Some configuration is needed using externally set environment variables. These are actually picked up by the Hub gem but you won't know what values to set until the application, DRb server and gem are all installed.
|
68
50
|
|
69
|
-
* `HUB_CONNECTION_URI` — as already discussed, this
|
51
|
+
* `HUB_CONNECTION_URI` — as already discussed, this holds a DRb URI giving the connection socket on which the server listens and to which clients connect; it defaults to `~/.hub_drb`.
|
70
52
|
* `HUB_PATH_PREFIX` — sometimes the Hub Gem redirects to various locations within the Hub application. If you have installed the application away from document root, specify the prefix to put onto redirection paths here (otherwise, provide an empty string). For example, when redirecting to the `account` controller's `login` method, the path used is `HUB_PATH_PREFIX + '/account/login'`.
|
71
53
|
* `HUB_BYPASS_SSL` - normally Hub sets cookies as secure-only in Production mode, requiring `https` fetches. This isn't enforced in e.g. development mode. If you want to allow insecure transport in Production, set `HUB_BYPASS_SSL` to `true`.
|
72
54
|
|
@@ -87,11 +69,22 @@ bundle exec rails s -b 127.0.0.1 --port 3000
|
|
87
69
|
...and then launch integrating applications with:
|
88
70
|
|
89
71
|
```
|
90
|
-
HUB_PATH_PREFIX="http://127.0.0.1:3000" be rails s -b 127.0.0.1 --port <other-port>
|
72
|
+
HUB_BYPASS_SSL="true" HUB_PATH_PREFIX="http://127.0.0.1:3000" be rails s -b 127.0.0.1 --port <other-port>
|
91
73
|
```
|
92
74
|
|
93
75
|
...and fetch `http://127.0.0.1:<other-port>` in your web browser.
|
94
76
|
|
77
|
+
## Your application's session cookies
|
78
|
+
|
79
|
+
It is often a good idea to clear application cookies when Hub users log in or out, so that there is no stale session data hanging around. **The Hub application auto-clears *all* cookies *ending with* the name `app_session`** for this purpose. Therefore, your application might include a `config/initializers/session_store.rb` file that says something like this:
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
# Be sure to restart your server when you modify this file.
|
83
|
+
Rails.application.config.session_store :cookie_store, key: 'yourappname_app_session'
|
84
|
+
```
|
85
|
+
|
86
|
+
This of course only applies if you're using cookies for your session data.
|
87
|
+
|
95
88
|
## Testing the installation
|
96
89
|
|
97
90
|
Visit your application in a Web browser and follow the links to sign up for a new account. To sign up, provide a name that will be displayed to users and a valid e-mail address. A confirmation message is sent to the address, containing a link that must be followed to activate the account. One created, users can log in and out of their accounts (with the possibility of sending a password reset request to their e-mail address in case they forget how to log in) and change their screen names. Users cannot change their recorded e-mail address — instead, they must create a new account under the new address.
|
data/hubssolib.gemspec
CHANGED
@@ -4,10 +4,10 @@ spec = Gem::Specification.new do |s|
|
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.name = 'hubssolib'
|
6
6
|
|
7
|
-
s.version = '
|
7
|
+
s.version = '3.0.1'
|
8
8
|
s.author = 'Andrew Hodgkinson and others'
|
9
9
|
s.email = 'ahodgkin@rowing.org.uk'
|
10
|
-
s.homepage = 'http://
|
10
|
+
s.homepage = 'http://pond.org.uk/'
|
11
11
|
s.summary = 'Cross-application single sign-on support library.'
|
12
12
|
s.license = 'MIT'
|
13
13
|
|
@@ -22,11 +22,14 @@ spec = Gem::Specification.new do |s|
|
|
22
22
|
EOF
|
23
23
|
|
24
24
|
s.files = FileList['lib/**/*.rb', '[A-Z]*'].to_a
|
25
|
-
s.required_ruby_version = '>=
|
25
|
+
s.required_ruby_version = '>= 3.0.0' # Not tested on earlier versions
|
26
26
|
|
27
|
-
s.
|
28
|
-
s.
|
29
|
-
|
30
|
-
s.add_development_dependency '
|
31
|
-
s.add_development_dependency '
|
27
|
+
s.add_dependency 'drb', '~> 2.2'
|
28
|
+
s.add_dependency 'base64', '~> 0.2'
|
29
|
+
|
30
|
+
s.add_development_dependency 'debug', '~> 1.1'
|
31
|
+
s.add_development_dependency 'simplecov', '~> 0.22'
|
32
|
+
s.add_development_dependency 'doggo', '~> 1.4'
|
33
|
+
s.add_development_dependency 'rspec', '~> 3.13'
|
34
|
+
s.add_development_dependency 'rspec-mocks', '~> 3.13'
|
32
35
|
end
|
data/lib/hub_sso_lib.rb
CHANGED
@@ -44,6 +44,10 @@ module HubSsoLib
|
|
44
44
|
# Shared cookie name.
|
45
45
|
HUB_COOKIE_NAME = 'hubapp_shared_id'
|
46
46
|
|
47
|
+
# Principally for #hubssolib_account_link.
|
48
|
+
HUB_LOGIN_INDICATOR_COOKIE = 'hubapp_shared_id_alive'
|
49
|
+
HUB_LOGIN_INDICATOR_COOKIE_VALUE = 'Y'
|
50
|
+
|
47
51
|
# Bypass SSL, for testing purposes? Rails 'production' mode will
|
48
52
|
# insist on SSL otherwise. Development & test environments do not,
|
49
53
|
# so do not need this variable setting.
|
@@ -427,7 +431,7 @@ module HubSsoLib
|
|
427
431
|
# The returned object is proxied via DRb - it is shared between processes.
|
428
432
|
#
|
429
433
|
# +key+:: Session key; lazy-initialises a new session under this key
|
430
|
-
# if none is found, then
|
434
|
+
# if none is found, then immediately rotates it.
|
431
435
|
#
|
432
436
|
# +remote_ip+:: Request's remote IP address. If there is an existing
|
433
437
|
# session which matches this, it's returned. If there is an
|
@@ -518,6 +522,67 @@ module HubSsoLib
|
|
518
522
|
!!self.hubssolib_current_user
|
519
523
|
end
|
520
524
|
|
525
|
+
# Returns markup for a link that leads to Hub's conditional login endpoint,
|
526
|
+
# inline-styled as a red "Log in" or green "Account" button. This can be
|
527
|
+
# used in page templates to avoid needing any additional images or other
|
528
|
+
# such resources and using pure HTML + CSS for the login indication.
|
529
|
+
#
|
530
|
+
# JavaScript is used so that e.g. "back" button fully-cached displays by a
|
531
|
+
# browser will get updated with the correct login state, where needed (so
|
532
|
+
# long as the 'pageshow' event is supported). NOSCRIPT browsers use the old
|
533
|
+
# no-cache image fallback, which is much less efficient, but works.
|
534
|
+
#
|
535
|
+
def hubssolib_account_link
|
536
|
+
logged_in = self.hubssolib_logged_in?()
|
537
|
+
|
538
|
+
ui_href = "#{HUB_PATH_PREFIX}/account/login_conditional"
|
539
|
+
noscript_img_src = "#{HUB_PATH_PREFIX}/account/login_indication.png"
|
540
|
+
noscript_img_tag = helpers.image_tag(noscript_img_src, size: '90x22', border: '0', alt: 'Log in or out')
|
541
|
+
|
542
|
+
logged_in_link = helpers.link_to('Account', ui_href, id: 'hubssolib_logged_in_link')
|
543
|
+
logged_out_link = helpers.link_to('Log in', ui_href, id: 'hubssolib_logged_out_link')
|
544
|
+
noscript_link = helpers.link_to(noscript_img_tag, ui_href, id: 'hubssolib_login_noscript')
|
545
|
+
|
546
|
+
# Yes, it's ugly, but yes, it works and it's a lot better for the server
|
547
|
+
# to avoid the repeated image fetches. It probably works out as overall
|
548
|
+
# more efficient for clients too - despite all the JS etc. work, there's
|
549
|
+
# no network fetch overhead or image rendering. On mobile in particular,
|
550
|
+
# the JS solution is likely to use less battery power.
|
551
|
+
#
|
552
|
+
safe_markup = <<~HTML
|
553
|
+
<div id="hubssolib_login_indication">
|
554
|
+
<noscript>
|
555
|
+
#{noscript_link}
|
556
|
+
</noscript>
|
557
|
+
</div>
|
558
|
+
<script type="text/javascript">
|
559
|
+
const logged_in_html = "#{helpers.j(logged_in_link)}";
|
560
|
+
const logged_out_html = "#{helpers.j(logged_out_link)}";
|
561
|
+
const container = document.getElementById('hubssolib_login_indication')
|
562
|
+
|
563
|
+
function hubSsoLibLoginStateWriteLink() {
|
564
|
+
const regexp = '#{helpers.j(HUB_LOGIN_INDICATOR_COOKIE)}\\s*=\\s*([^;]+)';
|
565
|
+
const flag = document.cookie.match(regexp)?.pop() || '';
|
566
|
+
|
567
|
+
if (flag === '#{HUB_LOGIN_INDICATOR_COOKIE_VALUE}') {
|
568
|
+
container.innerHTML = logged_in_html;
|
569
|
+
} else {
|
570
|
+
container.innerHTML = logged_out_html;
|
571
|
+
}
|
572
|
+
}
|
573
|
+
#{
|
574
|
+
# Immediate update, plus on-load update - including fully cached
|
575
|
+
# loads in the browser when the "Back" button is used. No stale
|
576
|
+
# login indications should thus arise from cached data.
|
577
|
+
}
|
578
|
+
hubSsoLibLoginStateWriteLink();
|
579
|
+
window.addEventListener('pageshow', hubSsoLibLoginStateWriteLink);
|
580
|
+
</script>
|
581
|
+
HTML
|
582
|
+
|
583
|
+
return safe_markup.html_safe()
|
584
|
+
end
|
585
|
+
|
521
586
|
# Check if the user is authorized to perform the current action. If calling
|
522
587
|
# from a helper, pass the action name and class name; otherwise by default,
|
523
588
|
# the current action name and 'self.class' will be used.
|
@@ -644,7 +709,7 @@ module HubSsoLib
|
|
644
709
|
def hubssolib_beforehand
|
645
710
|
|
646
711
|
# Does this action require a logged in user?
|
647
|
-
|
712
|
+
#
|
648
713
|
if (self.class.respond_to? :hubssolib_permissions)
|
649
714
|
login_is_required = !self.class.hubssolib_permissions.permitted?('', action_name)
|
650
715
|
else
|
@@ -652,19 +717,30 @@ module HubSsoLib
|
|
652
717
|
end
|
653
718
|
|
654
719
|
# If we require login but we're logged out, redirect to Hub login.
|
655
|
-
|
720
|
+
# NOTE EARLY EXIT
|
721
|
+
#
|
656
722
|
logged_in = hubssolib_logged_in?
|
657
723
|
|
658
|
-
if
|
659
|
-
|
660
|
-
return hubssolib_must_login
|
661
|
-
end
|
724
|
+
if logged_in == false
|
725
|
+
cookies.delete(HUB_LOGIN_INDICATOR_COOKIE)
|
662
726
|
|
663
|
-
|
664
|
-
|
665
|
-
|
727
|
+
if login_is_required
|
728
|
+
hubssolib_store_location
|
729
|
+
return hubssolib_must_login
|
730
|
+
else
|
731
|
+
return true
|
732
|
+
end
|
733
|
+
end
|
666
734
|
|
667
|
-
|
735
|
+
# Definitely logged in.
|
736
|
+
#
|
737
|
+
cookies[HUB_LOGIN_INDICATOR_COOKIE] = {
|
738
|
+
value: HUB_LOGIN_INDICATOR_COOKIE_VALUE,
|
739
|
+
domain: :all,
|
740
|
+
path: '/',
|
741
|
+
secure: ! hub_bypass_ssl?,
|
742
|
+
httponly: false
|
743
|
+
}
|
668
744
|
|
669
745
|
# So we reach here knowing we're logged in, but the action may or
|
670
746
|
# may not require authorisation.
|
@@ -855,6 +931,7 @@ module HubSsoLib
|
|
855
931
|
:hubssolib_current_user,
|
856
932
|
:hubssolib_unique_name,
|
857
933
|
:hubssolib_logged_in?,
|
934
|
+
:hubssolib_account_link,
|
858
935
|
:hubssolib_authorized?,
|
859
936
|
:hubssolib_privileged?,
|
860
937
|
:hubssolib_flash_data
|
@@ -961,11 +1038,11 @@ module HubSsoLib
|
|
961
1038
|
key = hub_session.session_key_rotation unless hub_session.nil?
|
962
1039
|
|
963
1040
|
cookies[HUB_COOKIE_NAME] = {
|
964
|
-
:
|
965
|
-
:
|
966
|
-
:
|
967
|
-
:
|
968
|
-
:
|
1041
|
+
value: key,
|
1042
|
+
domain: :all,
|
1043
|
+
path: '/',
|
1044
|
+
secure: ! hub_bypass_ssl?,
|
1045
|
+
httponly: true
|
969
1046
|
}
|
970
1047
|
|
971
1048
|
return hub_session
|
metadata
CHANGED
@@ -1,85 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hubssolib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Hodgkinson and others
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-03 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
13
|
+
name: drb
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
16
|
- - "~>"
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
18
|
+
version: '2.2'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '2.2'
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: base64
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.2'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.2'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: debug
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.1'
|
20
47
|
type: :development
|
21
48
|
prerelease: false
|
22
49
|
version_requirements: !ruby/object:Gem::Requirement
|
23
50
|
requirements:
|
24
51
|
- - "~>"
|
25
52
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
53
|
+
version: '1.1'
|
27
54
|
- !ruby/object:Gem::Dependency
|
28
55
|
name: simplecov
|
29
56
|
requirement: !ruby/object:Gem::Requirement
|
30
57
|
requirements:
|
31
58
|
- - "~>"
|
32
59
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
60
|
+
version: '0.22'
|
34
61
|
type: :development
|
35
62
|
prerelease: false
|
36
63
|
version_requirements: !ruby/object:Gem::Requirement
|
37
64
|
requirements:
|
38
65
|
- - "~>"
|
39
66
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
67
|
+
version: '0.22'
|
41
68
|
- !ruby/object:Gem::Dependency
|
42
69
|
name: doggo
|
43
70
|
requirement: !ruby/object:Gem::Requirement
|
44
71
|
requirements:
|
45
72
|
- - "~>"
|
46
73
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
74
|
+
version: '1.4'
|
48
75
|
type: :development
|
49
76
|
prerelease: false
|
50
77
|
version_requirements: !ruby/object:Gem::Requirement
|
51
78
|
requirements:
|
52
79
|
- - "~>"
|
53
80
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
81
|
+
version: '1.4'
|
55
82
|
- !ruby/object:Gem::Dependency
|
56
83
|
name: rspec
|
57
84
|
requirement: !ruby/object:Gem::Requirement
|
58
85
|
requirements:
|
59
86
|
- - "~>"
|
60
87
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
88
|
+
version: '3.13'
|
62
89
|
type: :development
|
63
90
|
prerelease: false
|
64
91
|
version_requirements: !ruby/object:Gem::Requirement
|
65
92
|
requirements:
|
66
93
|
- - "~>"
|
67
94
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
95
|
+
version: '3.13'
|
69
96
|
- !ruby/object:Gem::Dependency
|
70
97
|
name: rspec-mocks
|
71
98
|
requirement: !ruby/object:Gem::Requirement
|
72
99
|
requirements:
|
73
100
|
- - "~>"
|
74
101
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3.
|
102
|
+
version: '3.13'
|
76
103
|
type: :development
|
77
104
|
prerelease: false
|
78
105
|
version_requirements: !ruby/object:Gem::Requirement
|
79
106
|
requirements:
|
80
107
|
- - "~>"
|
81
108
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
109
|
+
version: '3.13'
|
83
110
|
description: |2
|
84
111
|
The Hub SSO Library supports single sign-on across multiple Rails
|
85
112
|
applications on the same host. The Hub application provides account
|
@@ -99,11 +126,10 @@ files:
|
|
99
126
|
- README.md
|
100
127
|
- hubssolib.gemspec
|
101
128
|
- lib/hub_sso_lib.rb
|
102
|
-
homepage: http://
|
129
|
+
homepage: http://pond.org.uk/
|
103
130
|
licenses:
|
104
131
|
- MIT
|
105
132
|
metadata: {}
|
106
|
-
post_install_message:
|
107
133
|
rdoc_options: []
|
108
134
|
require_paths:
|
109
135
|
- lib
|
@@ -111,15 +137,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
111
137
|
requirements:
|
112
138
|
- - ">="
|
113
139
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
140
|
+
version: 3.0.0
|
115
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
142
|
requirements:
|
117
143
|
- - ">="
|
118
144
|
- !ruby/object:Gem::Version
|
119
145
|
version: '0'
|
120
146
|
requirements: []
|
121
|
-
rubygems_version: 3.2
|
122
|
-
signing_key:
|
147
|
+
rubygems_version: 3.6.2
|
123
148
|
specification_version: 4
|
124
149
|
summary: Cross-application single sign-on support library.
|
125
150
|
test_files: []
|