2017-08-02 102 views
0

不工作laravel政策为我UsersUpdate

(1/1) HttpException 
This action is unauthorized. 

我觉得都应该很好地工作,我做了正确的,但也许不会。

我控制器的方法:

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

UsersPolicy是在App\Policies\

<?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; 
    } 

} 

而且在AuthServiceProvider:

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

我的用户模型为在App\Models\

当我切割$this->authorize('update', $uzytkownik);从控制器这一行一切正常,我看到'1',当我再次添加HttpException。

这里有什么问题?思考和思考,看,我在这里没有看到任何不好的事情。

回答

1

请确保您的路线是下AUTH middlware这样的:

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

或乌尔控制器构造是这样的:

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

,也像@Laerte说你的更新策略方法应该有另一个用户类型的参数,它是你想要编辑的用户,如下所示:

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

在您的策略中,您必须添加两个参数:第一个是登录的用户,第二个是实际参数。在政策试试这个:

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

仍然是一样的:< –

+0

$ uzytkownik是一个用户对象吗?用户是否被用作登录用户的标准模型? – Laerte