]> cat aescling's git repositories - mastodon.git/commitdiff
Allow setting of default language through config
authorEugen Rochko <eugen@zeonfederated.com>
Fri, 7 Apr 2017 10:40:26 +0000 (12:40 +0200)
committerEugen Rochko <eugen@zeonfederated.com>
Fri, 7 Apr 2017 10:40:26 +0000 (12:40 +0200)
Setting of locale in controller extracted to Localized concern,
the doorkeeper authorized applications controller moved under
custom namespace with inclusion of Localized, which resolves the
"it sometimes appears in a different random language" bug

.env.production.sample
app/controllers/application_controller.rb
app/controllers/concerns/localized.rb [new file with mode: 0644]
app/controllers/oauth/authorizations_controller.rb
app/controllers/oauth/authorized_applications_controller.rb [new file with mode: 0644]
app/views/oauth/authorized_applications/index.html.haml [moved from app/views/doorkeeper/authorized_applications/index.html.haml with 100% similarity]
config/routes.rb

index a7f9eb4bf85c8629c3d027b2d8d9abf387488ec4..a0e963ca6a6f97daa12bf9e76e9fbeeec8d5f7de 100644 (file)
@@ -25,6 +25,9 @@ OTP_SECRET=
 # Only allow registrations with the following e-mail domains
 # EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc
 
+# Optionally change default language
+# DEFAULT_LOCALE=de
+
 # E-mail configuration
 SMTP_SERVER=smtp.mailgun.org
 SMTP_PORT=587
index c06142fd43ac211fc597f15038186524d5e18b88..f00f9c1e35dfd961d8e211d0c6cfd07f01616722 100644 (file)
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class ApplicationController < ActionController::Base
+  include Localized
+
   # Prevent CSRF attacks by raising an exception.
   # For APIs, you may want to use :null_session instead.
   protect_from_forgery with: :exception
@@ -14,7 +16,6 @@ class ApplicationController < ActionController::Base
   rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity
 
   before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
-  before_action :set_locale
   before_action :set_user_activity
   before_action :check_suspension, if: :user_signed_in?
 
@@ -28,12 +29,6 @@ class ApplicationController < ActionController::Base
     store_location_for(:user, request.url)
   end
 
-  def set_locale
-    I18n.locale = current_user.try(:locale) || I18n.default_locale
-  rescue I18n::InvalidLocale
-    I18n.locale = I18n.default_locale
-  end
-
   def require_admin!
     redirect_to root_path unless current_user&.admin?
   end
diff --git a/app/controllers/concerns/localized.rb b/app/controllers/concerns/localized.rb
new file mode 100644 (file)
index 0000000..b6f8680
--- /dev/null
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Localized
+  extend ActiveSupport::Concern
+
+  included do
+    before_action :set_locale
+  end
+
+  def set_locale
+    I18n.locale = current_user.try(:locale) || default_locale
+  rescue I18n::InvalidLocale
+    I18n.locale = default_locale
+  end
+
+  def default_locale
+    ENV.fetch('DEFAULT_LOCALE') { I18n.default_locale }
+  end
+end
index 7c25266d81356fe66881c6bbf52e4284682a1bae..cdbfde0fbd0e2c510eb11d46683731275e5ff5d0 100644 (file)
@@ -1,9 +1,10 @@
 # frozen_string_literal: true
 
 class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
+  include Localized
+
   skip_before_action :authenticate_resource_owner!
 
-  before_action :set_locale
   before_action :store_current_location
   before_action :authenticate_resource_owner!
 
@@ -12,10 +13,4 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
   def store_current_location
     store_location_for(:user, request.url)
   end
-
-  def set_locale
-    I18n.locale = current_user.try(:locale) || I18n.default_locale
-  rescue I18n::InvalidLocale
-    I18n.locale = I18n.default_locale
-  end
 end
diff --git a/app/controllers/oauth/authorized_applications_controller.rb b/app/controllers/oauth/authorized_applications_controller.rb
new file mode 100644 (file)
index 0000000..09dd5d3
--- /dev/null
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class Oauth::AuthorizedApplicationsController < Doorkeeper::AuthorizedApplicationsController
+  include Localized
+
+  skip_before_action :authenticate_resource_owner!
+
+  before_action :store_current_location
+  before_action :authenticate_resource_owner!
+
+  private
+
+  def store_current_location
+    store_location_for(:user, request.url)
+  end
+end
index ca77191f7c8fa7655d227935d0f15d6b8a41f8ba..315ad5da57fec334368b61823c62ff2fffe90f93 100644 (file)
@@ -11,7 +11,7 @@ Rails.application.routes.draw do
   end
 
   use_doorkeeper do
-    controllers authorizations: 'oauth/authorizations'
+    controllers authorizations: 'oauth/authorizations', authorized_applications: 'oauth/authorized_applications'
   end
 
   get '.well-known/host-meta', to: 'xrd#host_meta', as: :host_meta