Ajax et Sécurité / Rest et filtres

Par Pierre Ftn, il y a 11 ans


bonjour ,

j'ai quelques hésitations concernant l'ajax et le restful et je trouve pas vraiment de réponse dans la doc.

Pour l'ajax , imaginons j'ai un système dans ce style ( y'a peut-être des erreurs de syntaxe c'est pour l'exemple ) :
pour les routes :

Route::get('/' , PostController@index ); Route::delete('/delete/{id}',['uses'=>'PostsController@destroy,'before'=>'csrf|admin']);

et que dans ma vue index j'ai un formulaire de ce genre

{{ Form::open(['url'=>'delete/'.$post->id']) }} {{ Form::token() }} {{ Form::submit('Supprimer') {{ Form::close() }}

et que avec ce formulaire je fais un requête ajax en delete , est-ce que automatiquement laravel vérifie la session pour l'admin et le csrf ? parce que en testant en local j'ai l'impression que je peux appeler la méthode delete sans être auth .

Et concernant Restful je trouve pas la bonné méthode pour le filtre , est-ce que je dois le faire dans les filtres ?
du style

Route::resource('Post','PostsController',['before'=>'admin']);

et là je suis bloqué car je ne sais pas comment dire sur quelle méthode je veux que le filtre s'applique.

Ou est-ce que je dois plutôt mettre les filters dans le construct mais du coup j'ai plus une vision globale depuis mes routes .

Merci d'avance ça fait beaucoup de questions

4 réponses

Spiker, il y a 11 ans

Oui tu peux faire t'es filtres dans le filters.php (en ce qui concerne le admin, pour bien verifier que l'utilisateur à les droits)
exemple:

Route::filter('admin', function() { if (!Auth::user() && Auth::user()->type != 9){ return Redirect::to('/'); die(); } });

Après si tu veux n'appliquer ton filter que sur une méthode

Route::delete('/delete/{id}', 'PostsController@destroy', array('before' => 'admin'));

Ou alors une autre façons de faire mais côté controller:

public function destroy($id){ $this->isAdmin(); //ton code.... } public function isAdmin(){ if(!Auth::user() && Auth::user()->type !=9) return Redirect::to('/'); die(); }
Pierre Ftn, il y a 11 ans

oui j'ai compris comment ça fonctionne ma question précise est : est-ce que dans une requête ajax il passe la variable Session pour vérifier que l'utilisateur est auth

et pour les filtres ma question est est-ce on peut préciser dans les options d'un Route::resource les méthodes qu'on veut filtrer

Pierre Ftn, il y a 11 ans

Merci , c'était bien ma question pour les filtres , je savais pas si ça appliquait au requête ajax ,
et pour check l'auth justement je me demandais si il y avait un moyen sans définir manuellement les routes , parce que on perd un des interêts de rest qui est de gagner du temps

Pierre Ftn, il y a 11 ans

Ok merci beaucoup pour tes réponses