omniauth-suomifi 0.1.0 → 0.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/lib/omniauth/strategies/suomifi.rb +63 -0
- data/lib/omniauth-suomifi/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29541d8a6b97e782ec1714090cf213e0d8d7d3a439ed687c626bb0150a40b0d8
|
4
|
+
data.tar.gz: 6fc90b20d63255872a8993190ace3ab2f083270cfb78885bb1727f12268360ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e906f7e048944692417c877ef345526cc0f93d9ce3f367d75a8841d0e85b80960f76c2388689fa0b98db96cb29ca5df84432d01c5b4ed1b642111b5187d83a5
|
7
|
+
data.tar.gz: b3e33e543d3a058a581d8cd5d524431afcd01d47ca724182cf36d82435bf9402aac2555f1a59bb145462900ec850104c57890173fe7f8809fa85d89aa0bf5366
|
@@ -16,6 +16,29 @@ module OmniAuth
|
|
16
16
|
# The private key file to define the private key.
|
17
17
|
option :private_key_file, nil
|
18
18
|
|
19
|
+
# Defines the locale parameters to check from the request phase request
|
20
|
+
# parameters. A valid language will be added to the IdP sign in redirect
|
21
|
+
# URL as the last parameter (with the name `locale` as expected by
|
22
|
+
# Suomi.fi).
|
23
|
+
#
|
24
|
+
# Suomi.fi accepts `fi`, `sv` or `en` in this parameter. The language can
|
25
|
+
# be parsed from the following kind of strings:
|
26
|
+
# - fi
|
27
|
+
# - sv-SE
|
28
|
+
# - en_US
|
29
|
+
#
|
30
|
+
# In case a valid language cannot be parsed from the parameter, the locale
|
31
|
+
# parameter will default to `:idp_sso_target_url_default_locale`.
|
32
|
+
#
|
33
|
+
# Note that the locale parameter is always added as the last parameter in
|
34
|
+
# in the redirect URL as expected by Suomi.fi.
|
35
|
+
option :idp_sso_target_url_locale_params, %w[locale language lang]
|
36
|
+
|
37
|
+
# This is the default locale to be passed to IdP sign in redirect URL as
|
38
|
+
# defined above. In case a valid locale is not found from the request
|
39
|
+
# parameters, this will be used instead.
|
40
|
+
option :idp_sso_target_url_default_locale, 'fi'
|
41
|
+
|
19
42
|
# The request attributes for Suomi.fi
|
20
43
|
option :possible_request_attributes, [
|
21
44
|
##############################
|
@@ -493,6 +516,20 @@ module OmniAuth
|
|
493
516
|
)
|
494
517
|
end
|
495
518
|
|
519
|
+
# Override the request phase to be able to pass the locale parameter to
|
520
|
+
# the redirect URL. Note that this needs to be the last parameter to
|
521
|
+
# be passed to the redirect URL.
|
522
|
+
def request_phase
|
523
|
+
authn_request = OneLogin::RubySaml::Authrequest.new
|
524
|
+
locale = locale_for_authn_request
|
525
|
+
|
526
|
+
with_settings do |settings|
|
527
|
+
url = authn_request.create(settings, additional_params_for_authn_request)
|
528
|
+
url += "&locale=#{CGI.escape(locale)}" unless locale.nil?
|
529
|
+
redirect(url)
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
496
533
|
# This method can be used externally to fetch information about the
|
497
534
|
# response, e.g. in case of failures.
|
498
535
|
def response_object
|
@@ -508,6 +545,13 @@ module OmniAuth
|
|
508
545
|
end
|
509
546
|
end
|
510
547
|
|
548
|
+
# Override the callback URL so that it always matches the one expected by
|
549
|
+
# Suomi.fi. No additional query string parameters can be included in the
|
550
|
+
# string.
|
551
|
+
def callback_url
|
552
|
+
full_host + script_name + callback_path
|
553
|
+
end
|
554
|
+
|
511
555
|
private
|
512
556
|
|
513
557
|
# Suomi.fi requires that the service provider needs to end the local user
|
@@ -603,6 +647,25 @@ module OmniAuth
|
|
603
647
|
end
|
604
648
|
end
|
605
649
|
end
|
650
|
+
|
651
|
+
def locale_for_authn_request
|
652
|
+
if options.idp_sso_target_url_locale_params.is_a?(Array)
|
653
|
+
options.idp_sso_target_url_locale_params.each do |param|
|
654
|
+
next unless request.params.key?(param.to_s)
|
655
|
+
|
656
|
+
locale = parse_language_value(request.params[param.to_s])
|
657
|
+
return locale unless locale.nil?
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
661
|
+
options.idp_sso_target_url_default_locale
|
662
|
+
end
|
663
|
+
|
664
|
+
def parse_language_value(string)
|
665
|
+
language = string.sub('_', '-').split('-').first
|
666
|
+
|
667
|
+
language if language =~ /^(fi|sv|en)$/
|
668
|
+
end
|
606
669
|
end
|
607
670
|
end
|
608
671
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-suomifi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antti Hukkanen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth-saml
|