permissionRepository = $permissionRepository; } public function forgetCachedPermissions() { $this->permissionRepository->forgetCached(); } /** * 所有权限 * * @return Collection */ public function getPermissions(): Collection { return $this->permissionRepository->get(); } /** * 权限列表 * * @param array $conditions * @return void */ public function index($conditions = []) { return $this->permissionRepository->withConditions($conditions)->applyConditions()->get(); } /** * 添加\编辑权限 * * @param array $attributes * @return void */ public function store(array $attributes) { $attributes = array_only($attributes, array_merge(app(Permission::class)->getFillable(), ['children'])); $rule = [ 'name' => ['regex:'.config('regex.namespace'), 'display_length:32', Rule::unique($this->permissionRepository->getTable(), 'name')->ignore($attributes['id'])], 'title' => ['display_length:32'], 'displayorder' => ['numeric', 'min:0', 'max:100'], 'status' => ['in:0,1'], 'icon' => [Rule::in(config('icon'))], ]; $message = [ 'name.unique' => '权限标识必须唯一', ]; Validator::validate($attributes, $rule, $message); if ($attributes['parent_id']) { $parent = $this->permissionRepository->findById($attributes['parent_id']); } if (!$attributes['id']) { $permission = $this->permissionRepository->create($attributes, $parent); return $permission; } $permission = $this->permissionRepository->findById($attributes['id']); if ($parent && $permission->parent_id !== $parent->id) { $permission->appendToNode($parent); } $this->permissionRepository->setModel($permission)->update($attributes); return $permission; } /** * 删除 * * @param int|string|array $ids * @return bool */ public function destroy($ids) { $ids = is_array($ids) ? $ids : [$ids]; foreach ($ids as $value) { if ($value < 38) { throw new AuthException('系统初始化权限不能删除', AuthException::FORBIDDEN); } } $this->permissionRepository->destroy($ids); return true; } }