【发布时间】:2021-08-10 22:59:23
【问题描述】:
我正在尝试为用户权限创建策略,因此我从数据库中检索用户权限并检查他是否能够执行此操作,但该策略始终返回 403:
类别控制器
我有一个这样的存储方法
public function store(Request $request)
{
$user = auth('sanctum')->user();
if (!$user) {
return $this->ApiResponse(401,null,'Can not do this action without login, Login and tray again',);
}
$ability = "create-category";
$this->authorize('can',[$user,Category::class,$ability]);
$request->validate( [
'name' => 'required|unique:categories',
'parent_id' => 'nullable|integer|exists:categories,id',
]);
try {
$project = Category::create($request->all());
return $this->ApiResponse(Response::HTTP_CREATED, "category created successfully",null, $project);
}catch (Exception $e) {
return $this->ApiResponse(500, 'category can\'t be created try later');
}
}
类别政策
我有这样的方法
public function can (User $user,Category $category,string $ability)
{
$role = Role::with('permissions')->find($user->role_id);
$permissions = $role->permissions;
for ($i=0; $i<count($permissions); $i++) {
$userPermissions[$i] = $permissions[$i]['name'];
}
if (in_array($ability, $userPermissions)) {
return true;
}
return false;
}
AuthServiceProvider
protected $policies = [
Category::class => CategoryPolicy::class,
];
那么问题是什么??
【问题讨论】:
标签: php laravel backend laravel-8 policy