2017-08-02 2 views
0

Ich habearbeiten nicht Laravel Politik für meine UsersUpdate

(1/1) HttpException 
This action is unauthorized. 

denke ich, alles gut funktionieren sollte, und ich habe es richtig gemacht, aber vielleicht auch nicht.

Mein Controller-Methode:

public function update(Request $request, Users $uzytkownik) 
{ 
    $this->authorize('update', $uzytkownik); 
    return 1; 
} 

UsersPolicy, die in App\Policies\ ist:

<?php 

namespace App\Policies; 

use App\Models\Users; 
use Illuminate\Auth\Access\HandlesAuthorization; 

class UsersPolicy 
{ 
    use HandlesAuthorization; 

    public function update(Users $user) 
    { 
     return true; 
//  return $user->login === auth()->login; 
    } 

} 

Und in AuthServiceProvider: legt

protected $policies = [ 
     'App\Model' => 'App\Policies\ModelPolicy', 
     'App\Models\Users' => 'App\Policies\UsersPolicy', 
    ]; 

Mein Benutzer Modell

in

Wenn ich $this->authorize('update', $uzytkownik); diese Linie vom Controller schneide funktioniert alles gut und ich sehe "1", wenn ich es wieder hinzufügen HttpException.

Was habe ich hier falsch? Denken und Denken, schauen, ich sehe hier nichts Schlechtes.

Antwort

1

Bitte stellen Sie sicher, dass Ihre Route unter Auth middlware ist wie folgt:

Route::group(['middleware' => 'auth'], function() { 
    // ur update route here 
}); 

oder in ur-Controller Konstruktor wie folgt aus:

public function __construct() 
{ 
    $this->middleware('auth'); 
} 

und auch Wie @Laerte sagte Ihre Update-Policy-Methode sollte einen anderen Parameter vom Typ Benutzer haben, die der Benutzer ist, den Sie bearbeiten möchten, wie folgt:

public function update(Users $userLoggedIn, Users $uzytkownik) 
{ 
    return true; 
} 
0

In Ihrer Richtlinie müssen Sie zwei Parameter hinzufügen: Der erste ist der angemeldete Benutzer und der zweite ist der tatsächliche Parameter. Versuchen Sie, dies in der Politik:

public function update(Users $userLoggedIn, $user) 
{ 
    return true; 
} 
+0

immer noch das gleiche: < –

+0

Ist $ uzytkownik ein 'Benutzer' Objekt? "Benutzer" wird als Standardmodell für die angemeldeten Benutzer verwendet? – Laerte

Verwandte Themen