Skip to content

Commit c094659

Browse files
committed
Allow OIDC auth providers to be customized more easily
1 parent 3bd185a commit c094659

9 files changed

Lines changed: 52 additions & 67 deletions

File tree

app/views/devise/sessions/_omniauth_options.html.erb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
<% Devise.omniauth_configs.each do |provider, config| -%>
33
<%= link_to(omniauth_authorize_path(resource_name, provider), method: :post,
44
class: config.options[:logo] ? '' : 'btn btn-default') do %>
5-
<% if config.options[:logo] %>
5+
<% if config.options[:logo].present? %>
66
<%= image_tag(config.options[:logo], class: "omniauth-logo omniauth-#{provider}") -%>
77
<% else %>
88
<%= t('authentication.omniauth.log_in_with',
9-
provider: t("authentication.omniauth.providers.#{provider}",
10-
default: provider.to_s.titleize)) -%>
9+
provider: config.options[:label] || t("authentication.omniauth.providers.#{provider}", default: provider.to_s.titleize)) -%>
1110
<% end %>
1211
<% end -%>
1312
<% end -%>

app/views/layouts/_login_menu.html.erb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
<ul class="dropdown-menu dropdown-menu-right">
66
<% Devise.omniauth_configs.each do |provider, config| -%>
77
<li class="dropdown-item">
8-
<%= link_to "Log in with #{t("authentication.omniauth.providers.#{provider}", default: provider.to_s.titleize)}",
8+
<%= link_to t('authentication.omniauth.log_in_with',
9+
provider: config.options[:label] || t("authentication.omniauth.providers.#{provider}", default: provider.to_s.titleize)),
910
omniauth_authorize_path('user', provider), method: :post %>
1011
</li>
1112
<% end %>

config/initializers/omniauth/aaf.rb

Lines changed: 0 additions & 26 deletions
This file was deleted.

config/initializers/omniauth/ls_login.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
logo: 'ls-login.png',
55
name: :elixir_aai,
66
scope: [:openid, :email, :profile],
7-
response_type: 'code',
7+
response_type: :code,
88
issuer: 'https://login.aai.lifescience-ri.eu/oidc/',
99
discovery: true,
1010
client_options: {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# OpenID Connect configuration
2+
unless Rails.application.config.secrets.dig(:oidc, :client_id).blank?
3+
Devise.omniauth :openid_connect, {
4+
name: :oidc,
5+
label: Rails.application.config.secrets.oidc[:label],
6+
logo: Rails.application.config.secrets.oidc[:logo],
7+
issuer: Rails.application.config.secrets.oidc[:issuer],
8+
strategy_class: OmniAuth::Strategies::OpenIDConnect,
9+
scope: [:openid, :email, :profile],
10+
response_type: :code,
11+
discovery: true,
12+
client_options: {
13+
identifier: Rails.application.config.secrets.oidc[:client_id],
14+
secret: Rails.application.config.secrets.oidc[:secret],
15+
redirect_uri: Rails.application.config.secrets.oidc[:redirect_uri].presence ||
16+
"#{TeSS::Config.base_url.chomp('/')}/users/auth/oidc/callback"
17+
}
18+
}
19+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Secondary OpenID Connect configuration
2+
unless Rails.application.config.secrets.dig(:oidc2, :client_id).blank?
3+
Devise.omniauth :openid_connect, {
4+
name: :oidc2,
5+
label: Rails.application.config.secrets.oidc2[:label],
6+
logo: Rails.application.config.secrets.oidc2[:logo],
7+
issuer: Rails.application.config.secrets.oidc2[:issuer],
8+
strategy_class: OmniAuth::Strategies::OpenIDConnect,
9+
scope: [:openid, :email, :profile],
10+
response_type: :code,
11+
discovery: true,
12+
client_options: {
13+
identifier: Rails.application.config.secrets.oidc2[:client_id],
14+
secret: Rails.application.config.secrets.oidc2[:secret],
15+
redirect_uri: Rails.application.config.secrets.oidc2[:redirect_uri].presence ||
16+
"#{TeSS::Config.base_url.chomp('/')}/users/auth/oidc2/callback"
17+
}
18+
}
19+
end

config/initializers/omniauth/tuakiri.rb

Lines changed: 0 additions & 25 deletions
This file was deleted.

config/locales/en.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,8 +734,8 @@ en:
734734
description: ''
735735
providers:
736736
elixir_aai: LS Login
737-
oidc: AAF (Australia)
738-
oidc2: Tuakiri (NZ)
737+
oidc: OpenID Connect
738+
oidc2: Alternative OpenID Connect
739739
log_in_with: 'Log in with %{provider}'
740740
ingestion:
741741
categories:

config/secrets.example.yml

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,21 @@ external_api_keys: &external_api_keys
1717
recaptcha:
1818
sitekey:
1919
secret:
20-
elixir_aai:
20+
elixir_aai: # LS-Login authentication config
2121
client_id: # client id
2222
secret: # secret
23-
oidc:
24-
label: # service label
23+
oidc: # OpenID Connect authentication config
24+
label: # name of auth provider to display to users e.g. AAF (Australia)
25+
logo: # optional path to logo to display to users under app/assets/images e.g. dresa/aaf_service_223x54.png
2526
client_id: # client id
2627
secret: # secret
27-
redirect_uri: # redirect_uri e.g. https://<host address>/users/auth/oidc/callback
2828
issuer: # issuer uri e.g. https://central.test.aaf.edu.au
29-
host: # host e.g. central.text.aaf.edu.au
30-
oidc2:
31-
label: # service label
29+
oidc2: # Secondary OpenID Connect authentication config
30+
label: # name of auth provider to display to users e.g. Tuakiri (NZ)
31+
logo: # optional path to logo to display to users under app/assets/images
3232
client_id: # client id
3333
secret: # secret
34-
redirect_uri: # redirect_uri e.g. https://<host address>/users/auth/oidc/callback
3534
issuer: # issuer uri e.g. https://openidconnect.test.tuakiri.ac.nz
36-
host: # host e.g. central.text.aaf.edu.au
3735
bioportal_api_key:
3836
fairsharing:
3937
username:

0 commit comments

Comments
 (0)