web-dev-qa-db-fra.com

Erreurs "Cette action n'est pas autorisée." dans Laravel 5.5

Je fais une porte comme ça:

Gate::define('update-post', function  ($user, Post $post) {
    return $user->hasAccess(['update-post']) or $user->id == $post->user_id;
});

J'ai vérifié ma base de données et il a un accès update-post et l'ID utilisateur est le même que dans le post. mais j'ai eu:

Cette action n'est pas autorisée.

les erreurs. est-ce que je fais une erreur ici? Merci.

3
Ying

Je rencontre un problème similaire il y a quelque temps lorsque je commence à utiliser Form Request classes pour validation de données (avec php artisan make:request UpdateUserRequest par exemple).

Si vous utilisez un Form Request pour valider les données, vérifiez tout d’abord que vous définissez correctement la règle correcte pour l’autoriser. Ceci est géré dans la méthode authorize qui retourne une boolean, qui par défaut est définie sur false:

namespace App\Http\Requests\Users;

use Illuminate\Foundation\Http\FormRequest;

class UpdateUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()   
    {
        /** 
         * By default it returns false, change it to 
         * something like this if u are checking authentication
         */
        return Auth::check(); // <------------------

        /** 
         * You could also use something more granular, like
         * an admin validation or make use of a Policy:
         * return auth()->user()->isAdmin();
         */
    }

    public function rules()
    {
        // your validations...
    }

}
10
HCK

Assurez-vous de renvoyer la méthode true on "authorize"

public function authorize()
{
    return true;
}
2
Rajesh K. Chaudhary
<?php 
namespace App\Modules\UserManagement\Request;

use Illuminate\Foundation\Http\FormRequest;
use Response;

class UserRequest extends FormRequest
{
     /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }


    public function rules()
    {

        $rules = [
            'full_name' => 'required',
            'email' => 'required|email',
            'password' => 'required',
            're_enter_password' => 'required'
        ];

        return $rules;
    }
}
0
user3257040