Bonjour,
Voila je rencontre un petit problème avec mon code.
Je cherche à ajouter la sécurité dans mon site en utilisant le composant Csrf de cakephp 3
pour cela j'ai un controller ColisController ou j'ai ceci:
public function initialize()
{
parent::initialize();
if(env('HTTPS'))
{
$this->loadComponent('Csrf',['secure'=>true]);
}
else
{
$this->loadComponent('Csrf');
}
}
public function beforeFilter(\Cake\Event\Event $event) {
if (in_array($this->request->action, ['bordereaux','destination_bordereaux'])) {
$this->eventManager()->off($this->Csrf);
}
}
//fonction affichage du formulaire
public function Bordereaux()
{
//$this->eventManager()->off($this->Csrf);
if($this->request->is('post'))
{
execution du form
}
}
// fonction de récupération des données
public function DestinationBordereaux()
{
// $this->eventManager()->off($this->Csrf);
$this->autoRender = false;
$result['destination'] = $this->Colis->Agences->find()
->select(['nom_agence','id','ville'])
->where(['id !='=>$this->Auth->user('agence_id')])
->all();
debug($result);die();
$users = TableRegistry::get('Administrations.Users');
$result['chauffeur'] = $users->find()
->select(['nom','id','prenom'])
->contain(['Groupes'=>function($user){
return $user->select(['id'])
->where(['nom_groupe'=>'Chauffeur']);
}])
->all();
$data = json_encode($result);
echo $data;
die();
}
enfin dans ma vue bordereau j'ai ceci:
<div class="row" ng-controller="AgencesCtrl" ng-init="loadDestination()">
<?php echo $this->Form->create(NULL,['id' =>'form-ui','type' =>'file','inputDefaults'=> ['div'=>false]]); ?>
<div class="col-lg-3 col-md-3">
<div class="form-group">
<div class="col-lg-12">
<select class="form-control" required="required" data-ng-model="form.destination" name="destination" data-ng-change="loadColis(form.destination)">
<option value='' disabled selected>Choisir la destination</option>
<option ng-repeat="option in destinations" value="{{option.id}}" ng-bind="option.nom_agence + '-('+ option.ville +')'"></option>
</select>
</div>
</div>
</div>
<?php echo $this->Form->end();?>
</div>
Je veux que lorsque j'execute mon action bordereau, que les menus déroulants du formulaire soient soient remplie
j'obtient une erreur 403 du genre je n'ai pas access à la ressourece.
mais ce que je constate est que si je retire le composant $this->loadComponent('Csrf') dans ma fonction initialise, tout ce passe bien mais l'ajout du composant me retire les doits je ne sais pas si c'est un trou noir.
je ne sais pas si quelqu'un a une idée de quoi je parle SVP à l'aide!!
cordialement
Personne n'as encore eu ce problème?
je cherche depuis mais rien, mon soucis est de pouvoir faire des listes dynamiques avec angularjs et cakephp, vue que le helper de cake est en php alors j'ai préférer surcharger le formulaire en ajoutant des champs input classique. Lorsque j'ajoute le composant csrf dans ma fonction initialize du controller, j'ai une erreur 403,j'aimerai comprendre le pourquoi.
SVP
Tu utilises le composant Secure ? Si tu créés ou modifies certaines valeurs dans tes input/select, le composant renverra une erreur.