Allow setting of default language through config
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
This commit is contained in:
		
							parent
							
								
									624a9a7136
								
							
						
					
					
						commit
						e3a3422a65
					
				
					 7 changed files with 43 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue