forked from fedi/mastodon
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
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue