Merge pull request #1145 from tootsuite/feature-customized-default-locale
Allow setting of default language through config
This commit is contained in:
		| @@ -25,6 +25,9 @@ OTP_SECRET= | |||||||
| # Only allow registrations with the following e-mail domains | # Only allow registrations with the following e-mail domains | ||||||
| # EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc | # EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc | ||||||
|  |  | ||||||
|  | # Optionally change default language | ||||||
|  | # DEFAULT_LOCALE=de | ||||||
|  |  | ||||||
| # E-mail configuration | # E-mail configuration | ||||||
| SMTP_SERVER=smtp.mailgun.org | SMTP_SERVER=smtp.mailgun.org | ||||||
| SMTP_PORT=587 | SMTP_PORT=587 | ||||||
|   | |||||||
| @@ -1,6 +1,8 @@ | |||||||
| # frozen_string_literal: true | # frozen_string_literal: true | ||||||
|  |  | ||||||
| class ApplicationController < ActionController::Base | class ApplicationController < ActionController::Base | ||||||
|  |   include Localized | ||||||
|  |  | ||||||
|   # Prevent CSRF attacks by raising an exception. |   # Prevent CSRF attacks by raising an exception. | ||||||
|   # For APIs, you may want to use :null_session instead. |   # For APIs, you may want to use :null_session instead. | ||||||
|   protect_from_forgery with: :exception |   protect_from_forgery with: :exception | ||||||
| @@ -14,7 +16,6 @@ class ApplicationController < ActionController::Base | |||||||
|   rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity |   rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity | ||||||
|  |  | ||||||
|   before_action :store_current_location, except: :raise_not_found, unless: :devise_controller? |   before_action :store_current_location, except: :raise_not_found, unless: :devise_controller? | ||||||
|   before_action :set_locale |  | ||||||
|   before_action :set_user_activity |   before_action :set_user_activity | ||||||
|   before_action :check_suspension, if: :user_signed_in? |   before_action :check_suspension, if: :user_signed_in? | ||||||
|  |  | ||||||
| @@ -28,12 +29,6 @@ class ApplicationController < ActionController::Base | |||||||
|     store_location_for(:user, request.url) |     store_location_for(:user, request.url) | ||||||
|   end |   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! |   def require_admin! | ||||||
|     redirect_to root_path unless current_user&.admin? |     redirect_to root_path unless current_user&.admin? | ||||||
|   end |   end | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								app/controllers/concerns/localized.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								app/controllers/concerns/localized.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||||
| @@ -1,9 +1,10 @@ | |||||||
| # frozen_string_literal: true | # frozen_string_literal: true | ||||||
|  |  | ||||||
| class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController | class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController | ||||||
|  |   include Localized | ||||||
|  |  | ||||||
|   skip_before_action :authenticate_resource_owner! |   skip_before_action :authenticate_resource_owner! | ||||||
|  |  | ||||||
|   before_action :set_locale |  | ||||||
|   before_action :store_current_location |   before_action :store_current_location | ||||||
|   before_action :authenticate_resource_owner! |   before_action :authenticate_resource_owner! | ||||||
|  |  | ||||||
| @@ -12,10 +13,4 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController | |||||||
|   def store_current_location |   def store_current_location | ||||||
|     store_location_for(:user, request.url) |     store_location_for(:user, request.url) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   def set_locale |  | ||||||
|     I18n.locale = current_user.try(:locale) || I18n.default_locale |  | ||||||
|   rescue I18n::InvalidLocale |  | ||||||
|     I18n.locale = I18n.default_locale |  | ||||||
|   end |  | ||||||
| end | end | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								app/controllers/oauth/authorized_applications_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/controllers/oauth/authorized_applications_controller.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||||
| @@ -11,7 +11,7 @@ Rails.application.routes.draw do | |||||||
|   end |   end | ||||||
|  |  | ||||||
|   use_doorkeeper do |   use_doorkeeper do | ||||||
|     controllers authorizations: 'oauth/authorizations' |     controllers authorizations: 'oauth/authorizations', authorized_applications: 'oauth/authorized_applications' | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   get '.well-known/host-meta', to: 'xrd#host_meta', as: :host_meta |   get '.well-known/host-meta', to: 'xrd#host_meta', as: :host_meta | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user