<%= content_for :page_title, "SSO Providers" %>

Manage single sign-on authentication providers for your instance. <% unless FeatureFlags.db_sso_providers? %> Changes require a server restart to take effect. <% end %>

<%= settings_section title: "Configured Providers" do %> <% if @sso_providers.any? %>
<% @sso_providers.each do |provider| %>
<% if provider.icon.present? %> <%= icon provider.icon, class: "w-5 h-5 text-secondary" %> <% else %> <%= icon "key", class: "w-5 h-5 text-secondary" %> <% end %>

<%= provider.label %>

<%= provider.strategy.titleize %> · <%= provider.name %>

<% if provider.enabled? %> Enabled <% else %> Disabled <% end %> <%= link_to edit_admin_sso_provider_path(provider), class: "p-1 text-secondary hover:text-primary", title: "Edit" do %> <%= icon "pencil", class: "w-4 h-4" %> <% end %> <%= button_to toggle_admin_sso_provider_path(provider), method: :patch, class: "p-1 text-secondary hover:text-primary", title: provider.enabled? ? "Disable" : "Enable", form: { data: { turbo_confirm: "Are you sure you want to #{provider.enabled? ? 'disable' : 'enable'} this provider?" } } do %> <%= icon provider.enabled? ? "toggle-right" : "toggle-left", class: "w-4 h-4" %> <% end %> <%= button_to admin_sso_provider_path(provider), method: :delete, class: "p-1 text-destructive hover:text-destructive", title: "Delete", form: { data: { turbo_confirm: "Are you sure you want to delete this provider? This action cannot be undone." } } do %> <%= icon "trash-2", class: "w-4 h-4" %> <% end %>
<% end %>
<% else %>
<%= icon "key", class: "w-12 h-12 mx-auto text-secondary mb-3" %>

No SSO providers configured yet.

<% end %>
<%= link_to new_admin_sso_provider_path, class: "inline-flex items-center gap-2 text-sm font-medium text-primary hover:text-secondary" do %> <%= icon "plus", class: "w-4 h-4" %> Add Provider <% end %>
<% end %> <% if @legacy_providers.any? %> <%= settings_section title: t("admin.sso_providers.index.legacy_providers_title"), collapsible: true, open: true do %>
<%= icon "alert-triangle", class: "w-5 h-5 text-amber-600 shrink-0" %>

<%= t("admin.sso_providers.index.legacy_providers_notice") %>

<% @legacy_providers.each do |provider| %>
<% provider_icon = provider[:icon].presence || "key" %> <%= icon provider_icon, class: "w-5 h-5 text-secondary" %>

<%= provider[:label].presence || provider[:name] %>

<%= provider[:strategy].to_s.titleize %> · <%= provider[:name] %> <% if provider[:issuer].present? %> · <%= provider[:issuer] %> <% end %>

<%= t("admin.sso_providers.index.env_configured") %>
<% end %>
<% end %> <% end %> <%= settings_section title: "Configuration Mode", collapsible: true, open: false do %>

Database-backed providers

Load providers from database instead of YAML config

<% if FeatureFlags.db_sso_providers? %> Enabled <% else %> Disabled <% end %>

Set AUTH_PROVIDERS_SOURCE=db to enable database-backed providers. This allows changes without server restarts.

<% end %>