* Removes FeatureFlag.enabled?(:creator_onboarding) from codebase * Removes FeatureFlag.enabled?(:creator_onboarding) from specs * Further cleanup, removal, and spec fixes * Fixes the user_request_confirmation_spec.rb * Reverts change to confirmation email button * Revert revert after looking at designs again :( * Removes redundant logo_png field from config + fixes test * Rewords an expectation in user_uses_the_editor_spec.rb * Revert removal of logo_png from Config images * Removes CSS class from user_uses_the_editor_spec.rb * Removes test from user_uses_the_editor_sepc.rb * Removes unnecessary else from _logo.html.erb * Adds back removed system spec * Removes SVG-related code from _logo.html.erb * Removes AsyncInfoController#use_creator_onboarding * Fixes spec failues due to removed code * Removes svg-related code (that I thought I removed already :/ ) * Re-removes FeatureFlag and logo_svg from _images.html.erb * Remove newest instances of FeatureFlag(:creator_onboarding) * remove instances where we use the creator_onboarding field from the base_data * fix: redirect to the correct path in the reguistrations controller based on whether the user is a creator or not Co-authored-by: Ridhwana <ridhwana.khan16@gmail.com>
93 lines
3.4 KiB
Ruby
93 lines
3.4 KiB
Ruby
module AuthenticationHelper
|
|
def authentication_provider(provider_name)
|
|
Authentication::Providers.get!(provider_name)
|
|
end
|
|
|
|
def authentication_available_providers
|
|
Authentication::Providers.available_providers
|
|
end
|
|
|
|
def authentication_enabled_providers
|
|
Authentication::Providers.enabled.map do |provider_name|
|
|
Authentication::Providers.get!(provider_name)
|
|
end
|
|
end
|
|
|
|
def authentication_provider_enabled?(provider_name)
|
|
authentication_enabled_providers.include?(provider_name)
|
|
end
|
|
|
|
def authentication_enabled_providers_for_user(user = current_user)
|
|
Authentication::Providers.enabled_for_user(user)
|
|
end
|
|
|
|
def signed_up_with(user = current_user)
|
|
providers = Authentication::Providers.enabled_for_user(user)
|
|
|
|
# If the user did not authenticate with any provider, they signed up with an email.
|
|
# rubocop:disable Layout/LineLength
|
|
auth_method = providers.any? ? providers.map(&:official_name).to_sentence : I18n.t("helpers.authentication_helper.email_password")
|
|
demonstrative = providers.size > 1 ? I18n.t("helpers.authentication_helper.any_of_those") : I18n.t("helpers.authentication_helper.that")
|
|
# rubocop:enable Layout/LineLength
|
|
|
|
I18n.t("helpers.authentication_helper.reminder", method: auth_method, dem: demonstrative)
|
|
end
|
|
|
|
def available_providers_array
|
|
Authentication::Providers.available.map(&:to_s)
|
|
end
|
|
|
|
def waiting_on_first_user?
|
|
Settings::General.waiting_on_first_user
|
|
end
|
|
|
|
def invite_only_mode_or_no_enabled_auth_options
|
|
ForemInstance.invitation_only? ||
|
|
(authentication_enabled_providers.none? &&
|
|
!Settings::Authentication.allow_email_password_registration)
|
|
end
|
|
|
|
def tooltip_class_on_auth_provider_enablebtn
|
|
invite_only_mode_or_no_enabled_auth_options ? "crayons-hover-tooltip" : ""
|
|
end
|
|
|
|
def disabled_attr_on_auth_provider_enable_btn
|
|
invite_only_mode_or_no_enabled_auth_options ? "disabled" : ""
|
|
end
|
|
|
|
def tooltip_text_email_or_auth_provider_btns
|
|
if invite_only_mode_or_no_enabled_auth_options
|
|
I18n.t("helpers.authentication_helper.invite_only")
|
|
else
|
|
""
|
|
end
|
|
end
|
|
|
|
def came_from_sign_up?
|
|
request.referer&.include?(new_user_registration_path)
|
|
end
|
|
|
|
# Returns true when a social authentication provider should be displayed in
|
|
# `/enter` page. This method serves the need to comply with platform specific
|
|
# restrictions, such as:
|
|
# - Within mobile apps we must hide social auth providers unless SIWA is enabled
|
|
# - Forem authentication doesn't need to comply with the above (it's the exception)
|
|
def display_social_login?(provider_name = nil)
|
|
return true if Authentication::Providers.enabled.include?(:apple)
|
|
return true if request.user_agent.to_s.match?(/Android/i)
|
|
return true if provider_name == :forem && Authentication::Providers.enabled.include?(:forem)
|
|
|
|
# Don't display (return false) if UserAgent includes ForemWebview - iOS only
|
|
request.user_agent.to_s.exclude?("ForemWebView")
|
|
end
|
|
|
|
# Display the fallback message (return true) if there is no way to register
|
|
# (on mobile apps). This only happens when all of the following are true:
|
|
# - We're on the "Create account" page
|
|
# - Email+Password registration is disabled
|
|
# - There are no social options enabled
|
|
# - This happens on mobile apps because of platform specific issues
|
|
def display_registration_fallback?(state)
|
|
state == "new-user" && !Settings::Authentication.allow_email_password_registration && !display_social_login?(:forem)
|
|
end
|
|
end
|