diff --git a/app/controllers/internal/configs_controller.rb b/app/controllers/internal/configs_controller.rb index 79e4fc496..f1f0c37ed 100644 --- a/app/controllers/internal/configs_controller.rb +++ b/app/controllers/internal/configs_controller.rb @@ -25,7 +25,7 @@ class Internal::ConfigsController < Internal::ApplicationController campaign_sidebar_image main_social_image favicon_url logo_svg rate_limit_follow_count_daily - ga_view_id ga_fetch_rate community_description + ga_view_id ga_fetch_rate community_description authentication_providers mailchimp_newsletter_id mailchimp_sustaining_members_id mailchimp_tag_moderators_id mailchimp_community_moderators_id periodic_email_digest_max periodic_email_digest_min suggested_tags @@ -43,6 +43,7 @@ class Internal::ConfigsController < Internal::ApplicationController def clean_up_params config = params[:site_config] config[:suggested_tags] = config[:suggested_tags].downcase.delete(" ") if config[:suggested_tags] + config[:authentication_providers] = config[:authentication_providers].downcase.delete(" ") if config[:authentication_providers] config[:sidebar_tags] = config[:sidebar_tags].downcase.delete(" ") if config[:sidebar_tags] end diff --git a/app/models/site_config.rb b/app/models/site_config.rb index 69dd239f2..3a0901d57 100644 --- a/app/models/site_config.rb +++ b/app/models/site_config.rb @@ -19,6 +19,9 @@ class SiteConfig < RailsSettings::Base # mascot account field :mascot_user_id, type: :integer, default: 1 + # Authentication + field :authentication_providers, type: :array, default: %w[twitter github] + # campaign field :campaign_hero_html_variant_name, type: :string, default: "" field :campaign_featured_tags, type: :array, default: %w[] @@ -60,4 +63,9 @@ class SiteConfig < RailsSettings::Base # Tags field :suggested_tags, type: :array, default: %w[beginners career computerscience javascript security ruby rails swift kotlin] field :sidebar_tags, type: :array, default: %w[help challenge discuss explainlikeimfive meta watercooler] + + # Helpful methods + def self.auth_allowed?(provider) + authentication_providers.include?(provider) + end end diff --git a/app/views/articles/_sidebar_additional.html.erb b/app/views/articles/_sidebar_additional.html.erb index 61c686d15..017a4d373 100644 --- a/app/views/articles/_sidebar_additional.html.erb +++ b/app/views/articles/_sidebar_additional.html.erb @@ -7,8 +7,12 @@ Join <%= ApplicationConfig["COMMUNITY_NAME"] %>
- <%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" class="cta cta-button login-cta-button" data-no-instant>Sign In With Twitter - Sign In With GitHub + <% if SiteConfig.auth_allowed?("twitter") %> + <%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" class="cta cta-button login-cta-button" data-no-instant>Sign In With Twitter + <% end %> + <% if SiteConfig.auth_allowed?("github") %> + Sign In With GitHub + <% end %>
<% end %> diff --git a/app/views/devise/registrations/_registration_form.html.erb b/app/views/devise/registrations/_registration_form.html.erb index 07895cef3..067d15be7 100644 --- a/app/views/devise/registrations/_registration_form.html.erb +++ b/app/views/devise/registrations/_registration_form.html.erb @@ -74,12 +74,16 @@

Great to have you

<% end %>

Open Source 😇

diff --git a/app/views/internal/configs/show.html.erb b/app/views/internal/configs/show.html.erb index 64dcf67ab..43d8f3d8c 100644 --- a/app/views/internal/configs/show.html.erb +++ b/app/views/internal/configs/show.html.erb @@ -75,6 +75,20 @@ +
+
Authentication
+
+
+ <%= f.label :authentication_providers, "Authentication providers" %> + <%= f.text_field :authentication_providers, + class: "form-control", + value: SiteConfig.authentication_providers.join(","), + placeholder: "List of valid providers: comma separated, letters only e.g. twitter,github" %> +
How can users sign in? (More options coming)
+
+
+
+
Campaign
@@ -346,34 +360,36 @@
-
-
-
-

Environment variables / AppConfig (readonly)

- -
-
- - - - - - - - - <% ENVied.config.variables.each do |v| %> - <% if v.group.in?(ENVied.required_groups) %> - - - - - <% end %> - <% end %> - -
VariableValue
<%= v.name %><%= ApplicationConfig[v.name] %>
+<% if current_user.has_role?(:single_resource_admin, Config) %> +
+
+
+

Environment variables / AppConfig (readonly)

+ +
+
+ + + + + + + + + <% ENVied.config.variables.each do |v| %> + <% if v.group.in?(ENVied.required_groups) %> + + + + + <% end %> + <% end %> + +
VariableValue
<%= v.name %><%= ApplicationConfig[v.name] %>
+
-
+<% end %> \ No newline at end of file diff --git a/app/views/layouts/_nav_menu.html.erb b/app/views/layouts/_nav_menu.html.erb index 3ab360cbc..8ce853edf 100644 --- a/app/views/layouts/_nav_menu.html.erb +++ b/app/views/layouts/_nav_menu.html.erb @@ -41,19 +41,23 @@ Sign In/Up
- <%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" data-no-instant> -
- Via Twitter -
-
- -
- Via GitHub -
-
+ <% if SiteConfig.auth_allowed?("twitter") %> + <%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" data-no-instant> +
+ Via Twitter +
+
+ <% end %> + <% if SiteConfig.auth_allowed?("github") %> + +
+ Via GitHub +
+
+ <% end %>
- All about dev.to + All about <%= ApplicationConfig["COMMUNITY_NAME"] %>
<% end %> diff --git a/app/views/layouts/_signup_modal.html.erb b/app/views/layouts/_signup_modal.html.erb index 66f0c3dd6..c32e75ea2 100644 --- a/app/views/layouts/_signup_modal.html.erb +++ b/app/views/layouts/_signup_modal.html.erb @@ -17,12 +17,16 @@

We're a place where coders share, stay up-to-date and grow their careers.

- <%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" class="sign-up-link cta" data-no-instant> - " class="icon-img" alt="Twitter logo" /> Auth With Twitter - - - " class="icon-img" alt="GitHub logo" /> Auth With GitHub - + <% if SiteConfig.auth_allowed?("twitter") %> + <%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" class="sign-up-link cta" data-no-instant> + " class="icon-img" alt="Twitter logo" /> Auth With Twitter + + <% end %> + <% if SiteConfig.auth_allowed?("github") %> + + " class="icon-img" alt="GitHub logo" /> Auth With GitHub + + <% end %>

We strive for transparency and don't collect excess data.

diff --git a/app/views/stories/_sign_in_invitation.html.erb b/app/views/stories/_sign_in_invitation.html.erb index 862fbd3b7..3a31e6463 100644 --- a/app/views/stories/_sign_in_invitation.html.erb +++ b/app/views/stories/_sign_in_invitation.html.erb @@ -11,11 +11,8 @@
- <%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" class="cta cta-button" aria-label="Sign in with Twitter." data-no-instant> - Sign In with Twitter - - - Sign In with GitHub + + Join Now
We require social login to prevent abuse. diff --git a/app/views/users/_account.html.erb b/app/views/users/_account.html.erb index 0744098af..7999f210e 100644 --- a/app/views/users/_account.html.erb +++ b/app/views/users/_account.html.erb @@ -1,20 +1,4 @@ -<% unless @user.identities.exists?(provider: "github") %> - -
-<% end %> - -<% unless @user.identities.exists?(provider: "twitter") %> - -
-<% end %> +<%= render "users/additional_authentication" %>

DEV API Keys

You can generate personal API keys to use for authentication with the DEV API. The API is still in early beta though. The DEV API documentation contains further information.

diff --git a/app/views/users/_additional_authentication.html.erb b/app/views/users/_additional_authentication.html.erb new file mode 100644 index 000000000..d722cd2a5 --- /dev/null +++ b/app/views/users/_additional_authentication.html.erb @@ -0,0 +1,19 @@ + +<% if SiteConfig.auth_allowed?("github") && !@user.identities.exists?(provider: "github") %> +<%= render "users/additional_authentication" %> + +
+<% end %> + +<% if SiteConfig.auth_allowed?("twitter") && !@user.identities.exists?(provider: "twitter") %> + +
+<% end %> diff --git a/app/views/users/_profile.html.erb b/app/views/users/_profile.html.erb index c6cad508e..40c5440c9 100644 --- a/app/views/users/_profile.html.erb +++ b/app/views/users/_profile.html.erb @@ -1,20 +1,7 @@ <%= javascript_packs_with_chunks_tag "colorPreview", defer: true %> -<% unless @user.identities.exists?(provider: 'github') %> - -<% end %> +<%= render "users/additional_authentication" %> -<% unless @user.identities.exists?(provider: 'twitter') %> - -<% end %>

/<%= current_user.username %>" aria-label="Go to your profile page">