web-dev-qa-db-fra.com

Laravel 5 validation de demande de formulaire renvoyant une erreur interdite

J'essaie d'utiliser Laravel 5.1 validation de demande de formulaire, pour autoriser si la demande provient du propriétaire. La validation est utilisée lorsque l'utilisateur essaie de mettre à jour une partie de la table clinics via le show.blade.php.

Mon installation jusqu'à présent:

routes.php:

Route::post('clinic/{id}', 
    array('as' => 'postUpdateAddress', 'uses' => 'ClinicController@postUpdateAddress'));

ClinicController.php:

public function postUpdateAddress($id, 
        \App\Http\Requests\UpdateClinicAddressFormRequest $request)
    {
        $clinic             = Clinic::find($id);
        $clinic->save();

        return Redirect::route('clinic.index');
    }

pdateClinicAddressFormRequest.php:

public function authorize()

    {
        $clinicId = $this->route('postUpdateAddress');

        return Clinic::where('id', $clinicId)
        ->where('user_id', Auth::id())
        ->exists();
    }

Show.blade.php

{!! Form::open(array('route' => array('postUpdateAddress', $clinic->id), 'role'=>'form')) !!}

{!! Form::close() !!}

Si je dd($clinicId) dans la fonction d'autorisation, elle renvoie null, donc je pense que c'est là que réside le problème!

Toute aide pour laquelle, sur soumettre, dit "interdit" serait grandement appréciée.

15
user860511

Vous obtenez erreur interdite parce que la méthode de demande de formulaire authorize() renvoie false:

Le problème est le suivant: $clinicId = $this->route('postUpdateAddress');

Pour accéder à une valeur de paramètre d'itinéraire dans les demandes de formulaire, vous pouvez procéder comme suit:

$clinicId = \Route::input('id'); //to get the value of {id}

donc authorize() devrait ressembler à ceci:

public function authorize()
{
    $clinicId = \Route::input('id'); //or $this->route('id');

    return Clinic::where('id', $clinicId)
    ->where('user_id', Auth::id())
    ->exists();
}
34
Emeka Mbah

J'ajoute cette confirmation de propriétaire à la méthode authorize () dans Request and work

public function authorize()
{
    return \Auth::check();
}
3
Peter Papp