Bonjour,
Voila je rencontre un petit problème avec mon code.
Ce que je fais
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>
Ce que je veux
Je veux que lorsque j'execute mon action bordereau, que les menus déroulants du formulaire soient soient remplie
Ce que j'obtiens
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