mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-06-01 20:04:51 +02:00
fixes #2557 use pwg_get_cookie_var
-Update cookie to use pwg_lang to avoid conflicts with other potential apps. -Add cookie path to the pwg_lang cookie to help with conflicts also. -Be less restrictive in load_cookie_language function -We can't use pwg_set_cookie because it is set in js not PHP so we force it to be called pwg_lang
This commit is contained in:
+2
-1
@@ -135,7 +135,8 @@ foreach (get_languages() as $language_code => $language_name)
|
||||
|
||||
$template->assign(array(
|
||||
'language_options' => $language_options,
|
||||
'current_language' => $user['language']
|
||||
'current_language' => $user['language'],
|
||||
'COOKIE_PATH' => cookie_path(),
|
||||
));
|
||||
|
||||
//Get link to doc
|
||||
|
||||
@@ -1942,21 +1942,17 @@ function load_cookie_language($load_language=true, $update_user=false, $unset_co
|
||||
global $user;
|
||||
|
||||
// Load language if cookie is set from login/register/password pages
|
||||
if (isset($_COOKIE['lang']) and $user['language'] != $_COOKIE['lang'])
|
||||
if (pwg_get_cookie_var('lang') and array_key_exists(pwg_get_cookie_var('lang'), get_languages()))
|
||||
{
|
||||
if (!array_key_exists($_COOKIE['lang'], get_languages()))
|
||||
{
|
||||
fatal_error('[Hacking attempt] the input parameter "'.htmlspecialchars($_COOKIE['lang']).'" is not valid');
|
||||
}
|
||||
|
||||
$user['language'] = $_COOKIE['lang'];
|
||||
|
||||
$user['language'] = pwg_get_cookie_var('lang');
|
||||
|
||||
if ($update_user)
|
||||
{
|
||||
single_update(
|
||||
USER_INFOS_TABLE,
|
||||
array(
|
||||
'language' => $_COOKIE['lang']
|
||||
'language' => pwg_get_cookie_var('lang')
|
||||
),
|
||||
array(
|
||||
'user_id' => $user_id ?? $user['id']
|
||||
@@ -1974,7 +1970,7 @@ function load_cookie_language($load_language=true, $update_user=false, $unset_co
|
||||
// We unset the lang cookie, if user has changed their language using interface
|
||||
// we don't want to keep setting it back to what was chosen using standard
|
||||
// pages lang switch
|
||||
setcookie("lang", "", time() - 3600);
|
||||
setcookie("pwg_lang", "", time() - 3600);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -499,7 +499,8 @@ foreach (get_languages() as $language_code => $language_name)
|
||||
|
||||
$template->assign(array(
|
||||
'language_options' => $language_options,
|
||||
'current_language' => $user['language']
|
||||
'current_language' => $user['language'],
|
||||
'COOKIE_PATH' => cookie_path(),
|
||||
));
|
||||
|
||||
//Get link to doc
|
||||
|
||||
@@ -112,6 +112,7 @@ foreach (get_languages() as $language_code => $language_name)
|
||||
$template->assign(array(
|
||||
'language_options' => $language_options,
|
||||
'current_language' => $user['language'],
|
||||
'COOKIE_PATH' => cookie_path(),
|
||||
));
|
||||
|
||||
//Get link to doc
|
||||
|
||||
@@ -88,8 +88,8 @@ function setCookie(cname, cvalue, exdays) {
|
||||
const d = new Date();
|
||||
d.setTime(d.getTime() + (exdays*24*60*60*1000));
|
||||
let expires = "expires="+ d.toUTCString();
|
||||
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
|
||||
if (cname == "lang")
|
||||
document.cookie = cname + "=" + cvalue + ";" + expires + ";path="+cookie_path;
|
||||
if (cname == "pwg_lang")
|
||||
{
|
||||
location.reload();
|
||||
}
|
||||
@@ -125,9 +125,9 @@ jQuery(".togglePassword").click(function(e){
|
||||
|
||||
jQuery("#other-languages a").click(function(e){
|
||||
let clickedUrl = new URL(jQuery(e.target).attr('href'));
|
||||
let selectedLang = clickedUrl.searchParams.get("lang");
|
||||
let selectedLang = clickedUrl.searchParams.get("pwg_lang");
|
||||
|
||||
if (selectedLang) {
|
||||
setCookie('lang',selectedLang,1);
|
||||
setCookie('pwg_lang',selectedLang,1);
|
||||
}
|
||||
});
|
||||
@@ -5,6 +5,8 @@
|
||||
var selected_language = `{$language_options[$current_language]}`;
|
||||
var url_logo_light = `{$ROOT_URL}themes/standard_pages/images/piwigo_logo.svg`;
|
||||
var url_logo_dark = `{$ROOT_URL}themes/standard_pages/images/piwigo_logo_dark.svg`;
|
||||
var cookie_path = {$COOKIE_PATH};
|
||||
|
||||
</script>
|
||||
{combine_script id='standard_pages_js' load='async' require='jquery' path='themes/standard_pages/js/standard_pages.js'}
|
||||
|
||||
@@ -109,7 +111,7 @@
|
||||
<div id="lang-select">
|
||||
<span id="other-languages">
|
||||
{foreach from=$language_options key=code item=lang}
|
||||
<span id="lang={$code}" onclick="setCookie('lang','{$code}',30)">{$lang}</span>
|
||||
<span id="lang={$code}" onclick="setCookie('pwg_lang','{$code}',30)">{$lang}</span>
|
||||
{/foreach}
|
||||
</span>
|
||||
<div id="selected-language-container">
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
<div id="lang-select">
|
||||
<span id="other-languages">
|
||||
{foreach from=$language_options key=code item=lang}
|
||||
<span id="lang={$code}" onclick="setCookie('lang','{$code}',30)">{$lang}</span>
|
||||
<span id="pwg_lang={$code}" onclick="setCookie('pwg_lang','{$code}',30)">{$lang}</span>
|
||||
{/foreach}
|
||||
</span>
|
||||
<div id="selected-language-container">
|
||||
|
||||
@@ -481,7 +481,7 @@ const str_must_not_empty = "{'must not be empty'|translate|escape:javascript}";
|
||||
<div id="lang-select">
|
||||
<span id="other-languages">
|
||||
{foreach from=$language_options key=code item=lang}
|
||||
<span id="lang={$code}" onclick="setCookie('lang','{$code}',30)">{$lang}</span>
|
||||
<span id="pwg_lang={$code}" onclick="setCookie('pwg_lang','{$code}',30)">{$lang}</span>
|
||||
{/foreach}
|
||||
</span>
|
||||
<div id="selected-language-container">
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
<div id="lang-select">
|
||||
<span id="other-languages">
|
||||
{foreach from=$language_options key=code item=lang}
|
||||
<span id="lang={$code}" onclick="setCookie('lang','{$code}',30)">{$lang}</span>
|
||||
<span id="pwg_lang={$code}" onclick="setCookie('pwg_lang','{$code}',30)">{$lang}</span>
|
||||
{/foreach}
|
||||
</span>
|
||||
<div id="selected-language-container">
|
||||
|
||||
Reference in New Issue
Block a user