mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-17 15:50:13 +01:00
Do not symbolize arbitray locale params
* Validate locale is valid before assigning it * Don't convert invalid locales to symbols (creates DoS risk) thanks @brynary
This commit is contained in:
parent
c6e526127c
commit
78f81ed29f
1 changed files with 6 additions and 2 deletions
|
|
@ -33,8 +33,12 @@ class ApplicationController < ActionController::Base
|
||||||
locale = params[:locale] # specifying a locale in the request takes precedence
|
locale = params[:locale] # specifying a locale in the request takes precedence
|
||||||
locale = locale || prefs.locale unless current_user.nil? # otherwise, the locale of the currently logged in user takes over
|
locale = locale || prefs.locale unless current_user.nil? # otherwise, the locale of the currently logged in user takes over
|
||||||
locale = locale || request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first if request.env['HTTP_ACCEPT_LANGUAGE']
|
locale = locale || request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first if request.env['HTTP_ACCEPT_LANGUAGE']
|
||||||
I18n.locale = locale.nil? ? I18n.default_locale : (I18n::available_locales.include?(locale.to_sym) ? locale : I18n.default_locale)
|
|
||||||
# logger.debug("Selected '#{I18n.locale}' as locale")
|
if locale && I18n::available_locales.map(&:to_s).include?(locale.to_s)
|
||||||
|
I18n.locale = locale
|
||||||
|
else
|
||||||
|
I18n.locale = I18n.default_locale
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_session_expiration
|
def set_session_expiration
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue