Autorisation dans un fichier Request

Ce sujet est résolu
Default
,

Bonjour,

J'aimerais utiliser la méthode Autorize() de mon FormRequest afin d'être sur que l'utilisateur à bien les droits sur le projet qu'il essait d'éditer. Je suis pas sur de m'y prendre de la bonne manière.
La documenation en parle au Chapitre "Authorizing form request" https://laravel.com/docs/5.6/validation#authorizing-form-requests

Ce que je fais

Voici la déclaration dans le fichier Request en question

public function authorize()
    {
        $project = Projects::find($this->route()->parameter('project_id'));

        return Auth::user()->id == $project->customer->user_id;

    }

Ce que j'obtiens

message: "Trying to get property 'customer' of non-object", exception: "ErrorException",…}
exception:"ErrorException"
file
:
"C:\xampp\htdocs\laravel\laravel\app\Http\Requests\StoreProjectStep2.php"
line
:

21

En regardant de plus près, je sais que mon $project est vide, car $this->route()->parameter('project_id') ne renvoit rien, j'ai également essayer en faisant $project = Projects::find($this->route('step2_store')); mais c'est pareil. Je n'arrive pas à comprendre la correlation entre la route, et la l'autorisation d'accès à la modification.

Merci

3 Réponse

147015
,

Bonjour.

Pourquoi ne pas utiliser plutôt le système de policies ou de gate ?

Default
,

Bonjour,

Bonne question, c'est plus approprié ? Plus simple ? plus efficasse ?

Default
,

J'ai donc utilisé une Gate pour faire ce dont j'avais besoin.

Ca fonctionne parfaitement ! Mais j'aimerais comprendre à quel moment il est conseillé d'utiliser la méthode authorize() d'un fichier Request.