Jump to content

"Jeton non valable" modification adresse client


Recommended Posts

Bonjour, 

 

l'un de mes clients m'a fait remonter une erreur sur le front office.

Il semblerait que les client ne peuvent plus modifier les champs de leur adresse lorsqu'ils se rendent sur

mon compte>Mes adresses>mettre à jour

 

Lorsqu’on change un champ du formulaire, quel qu'il soit (prénom, code postal, adresse) l'erreur suivante apparaît : 

Il y a 1 erreur :

  • Jeton non valable

 

J'ai bien vérifié dans le BO que les zones et pays sont bien paramétrés (dans Localisation>zone ou localisation>pays) screenshot en pj

post-1163969-0-45437100-1470769525_thumb.jpg

 

Pourriez-vous m'aider car c'est assez problématique?

 

Je vous remercie et vous souhaite une excellente soirée !

 

Cordialement

 

Philippe

Link to comment
Share on other sites

Bonjour,

 

Cela ressemble à une erreur dans le fichier adress.tpl, l'avez-vous modifié? Si oui tentez de le remplacer par un fichier original et tenez nous au courant ;)

 

Cordialement,

 

+1 , mais pas forcément uniquement adress.tpl.

Il est probable que les tpls du thème ne gère pas correctement les token ou que des liens en dur aient été remplacés dans ces mêmes tpls pour des boutons submit par exemple.

Si le thème est bidouillé il faudra le rectifier, ou simplement désactiver les tokens en front office dans Préférence -> générale :

 

Améliore la sécurité du front-office

OUINON

Active ou désactive les jetons (tokens) en front-office afin d'améliorer la sécurité de PrestaShop

Link to comment
Share on other sites

@Broceliande, en l'occurence j'en suis sur à 100% car je cite:

 

Du coup ça ne laisse pas beaucoup de doute ^^

 

Héhé oui pas faux, adress.tpl est à coup sûr touché , mais je me cite également du coup : 

 

mais pas forcément uniquement adress.tpl

 

 

Je fais référence à l'utilisation des tokens et l'endroit ou il est validé , cad dans FrontController (eg sur une 1.6) :

    public function isTokenValid()
    {
        if (!Configuration::get('PS_TOKEN_ENABLE')) {
            return true;
        }

        return (strcasecmp(Tools::getToken(false), Tools::getValue('token')) == 0);
    }

Autrement dit si le thème est bidouillé ou pas compatible avec la gestion des tokens il y a toutes les chances pour que AdressController ne soit pas le seul controller touché , et que d'autres tpls le soient ;).

 

Dans les deux cas à défaut d'être en mesure de corriger le tpl , la désactivation des tokens en front office permettra à notre ami de se débloquer à moindre effort.

  • Like 1
Link to comment
Share on other sites

Bonsoir, 

merci à vous pour vos réponses et votre temps !

@Lefty_sarl : j'ai remplacé mon fichier address.tpl par l'original qui était avec mon thème (nommé biocosmétique), malheureusement cela ne fonctionne pas. Est-ce possible que ce fichier ne soit pas compatbile avec prestashop 1.6.1.5 ? Vous trouverez le fichier address.tpl ci dessous si besoin...

 

@Broceliande : Merci pour l'astuce de désactiver les token. Cela fonctionne !  Par contre serait-il possible de me dire quelles sont les conséquences et en quoi les informations sont moins sécurisées?

 

Dans l'idéal j'aimerais quand même garder une sécurité optimale sur mon site, et donc "réparer" ce fichier tpl...

 

Bonne soirée à vous!

 

 

 

 

 

 

{* ----------------------------------------

   Template Prestashop BioCosmetic

   Copyright Prestacrea

   Author: Prestacrea


   ---------------------------------------- *}

 

{***** Prestashop 1.4 - Retro compatibility code *****}

{if !isset($ordered_adr_fields)}

{if isset($address)}

{counter start=0 skip=1 assign=address_key_number}

{foreach from=$address key=address_key item=address_value}

{$ordered_adr_fields.$address_key_number = $address_key}

{counter}

{/foreach}

{else}

{$ordered_adr_fields.0 = 'company'}

{$ordered_adr_fields.1 = 'vat_number'}

{$ordered_adr_fields.2 = 'firstname'}

{$ordered_adr_fields.3 = 'lastname'}

{$ordered_adr_fields.4 = 'address1'}

{$ordered_adr_fields.5 = 'address2'}

{$ordered_adr_fields.6 = 'postcode'}

{$ordered_adr_fields.7 = 'city'}

{$ordered_adr_fields.8 = 'country'}

{$ordered_adr_fields.9 = 'state'}

{/if}

{/if}

{***** /Prestashop 1.4 - Retro compatibility code *****}

 

<script type="text/javascript">

// <![CDATA[

idSelectedCountry = {if isset($smarty.post.id_state)}{$smarty.post.id_state|intval}{else}{if isset($address->id_state)}{$address->id_state|intval}{else}false{/if}{/if};

countries = new Array();

countriesNeedIDNumber = new Array();

countriesNeedZipCode = new Array();

{foreach from=$countries item='country'}

{if isset($country.states) && $country.contains_states}

countries[{$country.id_country|intval}] = new Array();

{foreach from=$country.states item='state' name='states'}

countries[{$country.id_country|intval}].push({ldelim}'id' : '{$state.id_state}', 'name' : '{$state.name|escape:'htmlall':'UTF-8'}'{rdelim});

{/foreach}

{/if}

{if $country.need_identification_number}

countriesNeedIDNumber.push({$country.id_country|intval});

{/if}

{if isset($country.need_zip_code)}

countriesNeedZipCode[{$country.id_country|intval}] = {$country.need_zip_code};

{/if}

{/foreach}

$(function(){ldelim}

$('.id_state option[value={if isset($smarty.post.id_state)}{$smarty.post.id_state}{else}{if isset($address->id_state)}{$address->id_state|escape:'htmlall':'UTF-8'}{/if}{/if}]').attr('selected', 'selected');

{rdelim});

{if $vat_management}

{literal}

$(document).ready(function() {

$('#company').blur(function(){

vat_number();

});

vat_number();

function vat_number()

{

if ($('#company').val() != '')

$('#vat_number').show();

else

$('#vat_number').hide();

}

});

{/literal}

{/if}

//]]>

</script>

 

{capture name=path}{l s='Your addresses'}{/capture}

{include file="$tpl_dir./breadcrumb.tpl"}

 

<h1>{l s='Your addresses'}</h1>

 

{include file="$tpl_dir./errors.tpl"}

 

<form action="{$link->getPageLink('address.php', true)}" method="post" class="std" id="add_adress">

<fieldset>

<h3>

{if isset($id_address) && (isset($smarty.post.alias) || isset($address->alias))}

{l s='Modify address'} 

{else}

{l s='Add a new address'}

{/if}

</h3>

<p class="required text dni">

<label for="dni">{l s='Identification number'}<sup>*</sup></label>

<span><input type="text" class="text validate" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{else}{if isset($address->dni)}{$address->dni}{/if}{/if}" data-validate="isDniLite" /></span>

<span class="form_info">{l s='DNI / NIF / NIE'}</span>

</p>

{assign var="stateExist" value="false"}

{foreach from=$ordered_adr_fields item=field_name}

{if $field_name eq 'company'}

<p class="text">

<input type="hidden" name="token" value="{$token}" />

<label for="company">{l s='Company'}</label>

<span><input type="text" class="text validate" id="company" name="company" value="{if isset($smarty.post.company)}{$smarty.post.company}{else}{if isset($address->company)}{$address->company}{/if}{/if}" data-validate="isGenericName" /></span>

</p>

{/if}

{if $field_name eq 'vat_number'}

{if $vat_display == 2}

<div id="vat_area">

{elseif $vat_display == 1}

<div id="vat_area" style="display:none">

{else}

<div style="display:none">

{/if}

<div id="vat_number">

<p class="text">

<label for="vat_number">{l s='VAT number'}</label>

<span><input type="text" class="text validate" name="vat_number" value="{if isset($smarty.post.vat_number)}{$smarty.post.vat_number}{else}{if isset($address->vat_number)}{$address->vat_number}{/if}{/if}" data-validate="isGenericName" /></span>

</p>

</div>

</div>

{/if}

{if $field_name eq 'firstname'}

<p class="required text float">

<label for="firstname">{l s='First name'}<sup>*</sup></label>

<span><input type="text" name="firstname" id="firstname" value="{if isset($smarty.post.firstname)}{$smarty.post.firstname}{else}{if isset($address->firstname)}{$address->firstname}{/if}{/if}" class="is_required validate" data-validate="isName" /></span>

</p>

{/if}

{if $field_name eq 'lastname'}

<p class="required text">

<label for="lastname">{l s='Last name'}<sup>*</sup></label>

<span><input type="text" id="lastname" name="lastname" value="{if isset($smarty.post.lastname)}{$smarty.post.lastname}{else}{if isset($address->lastname)}{$address->lastname}{/if}{/if}" class="is_required validate" data-validate="isName" /></span>

</p>

{/if}

{if $field_name eq 'address1'}

<p class="required text float">

<label for="address1">{l s='Address'}<sup>*</sup></label>

<span><input type="text" id="address1" name="address1" value="{if isset($smarty.post.address1)}{$smarty.post.address1}{else}{if isset($address->address1)}{$address->address1}{/if}{/if}" class="is_required validate" data-validate="isAddress" /></span>

</p>

{/if}

{if $field_name eq 'address2'}

<p class="required text">

<label for="address2">{l s='Address (Line 2)'}</label>

<span><input type="text" id="address2" name="address2" value="{if isset($smarty.post.address2)}{$smarty.post.address2}{else}{if isset($address->address2)}{$address->address2}{/if}{/if}" class="validate" data-validate="isAddress" /></span>

</p>

{/if}

{if $field_name eq 'postcode'}

<p class="required postcode text float">

<label for="postcode">{l s='Zip / Postal Code'}<sup>*</sup></label>

<span><input type="text" id="postcode" name="postcode" value="{if isset($smarty.post.postcode)}{$smarty.post.postcode}{else}{if isset($address->postcode)}{$address->postcode}{/if}{/if}" onkeyup="$('#postcode').val($('#postcode').val().toUpperCase());" class="is_required validate" data-validate="isPostCode" /></span>

</p>

{/if}

{if $field_name eq 'city'}

<p class="required text">

<label for="city">{l s='City'}<sup>*</sup></label>

<span><input type="text" name="city" id="city" value="{if isset($smarty.post.city)}{$smarty.post.city}{else}{if isset($address->city)}{$address->city}{/if}{/if}" maxlength="64" class="is_required validate" data-validate="isCityName" /></span>

</p>

{*

if customer hasn't update his layout address, country has to be verified

but it's deprecated

*}

{/if}

{if $field_name eq 'Country:name' || $field_name eq 'country'}

<p class="required select">

<label for="id_country">{l s='Country'}<sup>*</sup></label>

<select id="id_country" name="id_country">{$countries_list}</select>

</p>

{if isset($vatnumber_ajax_call) && $vatnumber_ajax_call}

<script type="text/javascript">

var ajaxurl = '{$ajaxurl}';

{literal}

$(document).ready(function(){

$('#id_country').change(function() {

$.ajax({

type: "GET",

url: ajaxurl+"vatnumber/ajax.php?id_country="+$('#id_country').val(),

success: function(isApplicable){

if(isApplicable == "1")

{

$('#vat_area').show();

$('#vat_number').show();

}

else

{

$('#vat_area').hide();

}

}

});

});

});

{/literal}

</script>

{/if}

{/if}

{if $field_name eq 'State:name'}

{assign var="stateExist" value="true"}

<p class="required id_state select">

<label for="id_state">{l s='State'}<sup>*</sup></label>

<select name="id_state" id="id_state">

<option value="">-</option>

</select>

</p>

{/if}

{/foreach}

{if $stateExist eq "false"}

<p class="required id_state select">

<label for="id_state">{l s='State'}<sup>*</sup></label>

<select name="id_state" id="id_state">

<option value="">-</option>

</select>

</p>

{/if}

<p class="textarea">

<label for="other">{l s='Additional information'}</label>

<span><textarea id="other" name="other" cols="26" rows="3" class="validate" data-validate="isMessage">{if isset($smarty.post.other)}{$smarty.post.other}{else}{if isset($address->other)}{$address->other}{/if}{/if}</textarea></span>

</p>

{if isset($one_phone_at_least) && $one_phone_at_least OR !isset($one_phone_at_least)}

<p class="form_info required">{l s='You must register at least one phone number'}<sup class="required">*</sup></p>

{/if}

<p class="text float">

<label for="phone">{l s='Home phone'}{if isset($one_phone_at_least) && $one_phone_at_least}<sup>*</sup>{/if}</label>

<span><input type="text" id="phone" name="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone}{else}{if isset($address->phone)}{$address->phone}{/if}{/if}" class="{if isset($one_phone_at_least) && $one_phone_at_least}is_required{/if} validate" data-validate="isPhoneNumber" /></span>

</p>

<p class="text">

<label for="phone_mobile">{l s='Mobile phone'}</label>

<span><input type="text" id="phone_mobile" name="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile}{else}{if isset($address->phone_mobile)}{$address->phone_mobile}{/if}{/if}" class="validate" data-validate="isPhoneNumber" /></span>

</p>

<p class="required text" id="adress_alias">

<label for="alias">{l s='Address name'}<sup>*</sup></label>

<span><input type="text" id="alias" name="alias" value="{if isset($smarty.post.alias)}{$smarty.post.alias}{else if isset($address->alias)}{$address->alias}{else if isset($select_address)}{l s='My address'}{/if}" class="is_required validate" data-validate="isGenericName" /></span>

</p>

<p class="submit">

{if isset($id_address)}<input type="hidden" name="id_address" value="{$id_address|intval}" />{/if}

{if isset($back)}<input type="hidden" name="back" value="{$back}" />{/if}

{if isset($mod)}<input type="hidden" name="mod" value="{$mod}" />{/if}

{if isset($select_address)}<input type="hidden" name="select_address" value="{$select_address|intval}" />{/if}

<input type="submit" name="submitAddress" id="submitAddress" value="{l s='Save'}" class="button" />

</p>

<p class="required"><sup>*</sup>{l s='Required field'}</p>

</fieldset>

</form>

 

<ul class="footer_links">

<li><a href="{$link->getPageLink('my-account.php', true)}" title="{l s='Back to your account'}">{l s='Back to your account'}</a></li>

<li><a href="{$base_dir}" title="{l s='Home'}">{l s='Home'}</a></li>

</ul>

Link to comment
Share on other sites

  • 5 months later...

Bonjour Philippe

 

Je rencontre le même souci que vous "jeton non valable" avec le thème biocosmetic... Avez-vous trouvé une solution pérenne au final (j'ai testé la désactivation des token qui fonctionne mais engendre d'autres soucis...) ?

Merci d'avance pour votre réponse !

 

Céline

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...