diff --git a/app/models/user.rb b/app/models/user.rb index e3297e0e9..4515d33d7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -530,7 +530,10 @@ class User < ApplicationRecord end def authenticated_with_all_providers? - identities_enabled.pluck(:provider).map(&:to_sym) == Authentication::Providers.enabled + # ga_providers refers to Generally Available (not in beta) + ga_providers = Authentication::Providers.enabled.reject { |sym| sym == :apple } + enabled_providers = identities.pluck(:provider).map(&:to_sym) + (ga_providers - enabled_providers).empty? end def rate_limiter diff --git a/app/services/broadcasts/welcome_notification/generator.rb b/app/services/broadcasts/welcome_notification/generator.rb index 8838716d7..e9705f71f 100644 --- a/app/services/broadcasts/welcome_notification/generator.rb +++ b/app/services/broadcasts/welcome_notification/generator.rb @@ -92,7 +92,10 @@ module Broadcasts end def authenticated_with_all_providers? - identities.count == Authentication::Providers.enabled.size + # ga_providers refers to Generally Available (not in beta) + ga_providers = Authentication::Providers.enabled.reject { |sym| sym == :apple } + enabled_providers = identities.pluck(:provider).map(&:to_sym) + (ga_providers - enabled_providers).empty? end def user_is_following_tags? diff --git a/app/views/users/_additional_authentication.html.erb b/app/views/users/_additional_authentication.html.erb index 8ddb85e1b..2cf1a00f9 100644 --- a/app/views/users/_additional_authentication.html.erb +++ b/app/views/users/_additional_authentication.html.erb @@ -1,7 +1,13 @@ <% unless @user.authenticated_with_all_providers? %>
<% authentication_enabled_providers.each do |provider| %> - <% next if provider.provider_name == :apple && !Flipper.enabled?(:apple_auth) %> + + <% next if provider.provider_name == :apple %> <% unless @user.authenticated_through?(provider.provider_name) %> <%= form_with url: provider.sign_in_path(state: "profile"), class: "flex w-100", local: true do |f| %> <%= f.button type: :submit, class: "crayons-btn crayons-btn--icon-left crayons-btn--brand-#{provider.provider_name} m-1" do %> diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index deac47fcc..b17b928f3 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -19,7 +19,7 @@ APPLE_OMNIAUTH_SETUP = lambda do |env| env["omniauth.strategy"].options[:client_id] = SiteConfig.apple_client_id env["omniauth.strategy"].options[:scope] = "email name" env["omniauth.strategy"].options[:key_id] = SiteConfig.apple_key_id - env["omniauth.strategy"].options[:pem] = SiteConfig.apple_pem + env["omniauth.strategy"].options[:pem] = SiteConfig.apple_pem.to_s.gsub("\\n", "\n") env["omniauth.strategy"].options[:provider_ignores_state] = true env["omniauth.strategy"].options[:team_id] = SiteConfig.apple_team_id end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index f20317897..8f6855888 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -913,7 +913,7 @@ RSpec.describe User, type: :model do end describe "#authenticated_with_all_providers?" do - let(:provider) { Authentication::Providers.available.first } + let(:provider) { (Authentication::Providers.available - [:apple]).first } it "returns false if the user has no related identity" do expect(user.authenticated_with_all_providers?).to be(false)