oat-sa / extension-tao-dac-simple
允许管理员向其他人提供某些资源的访问权限的扩展
v8.0.5
2024-04-15 17:36 UTC
Requires
- oat-sa/extension-tao-backoffice: >=6.0.0
- oat-sa/extension-tao-item: >=11.3
- oat-sa/generis: >=15.32.0
- oat-sa/oatbox-extension-installer: ~1.1||dev-master
- oat-sa/tao-core: >=53.11.4
- dev-master
- v8.0.5
- v8.0.4
- v8.0.3
- v8.0.2
- v8.0.1
- v8.0.0
- v7.10.6
- v7.10.5
- v7.10.4
- v7.10.3
- v7.10.2
- v7.10.1.1
- v7.10.1
- v7.10.0
- v7.9.0
- v7.8.1
- v7.8.0
- v7.7.9
- v7.7.8.1
- v7.7.8
- v7.7.7
- v7.7.6
- v7.7.5
- v7.7.4
- v7.7.3
- v7.7.2
- v7.7.1
- v7.7.0
- v7.6.0
- v7.5.0
- v7.4.1
- v7.4.0
- v7.3.1
- v7.3.0
- v7.2.0.1
- v7.2.0
- v7.1.8
- v7.1.7
- v7.1.6
- v7.1.5
- v7.1.4
- v7.1.3
- v7.1.2
- v7.1.1
- v7.1.0
- v7.0.0
- v6.8.4
- v6.8.3.1
- v6.8.3
- v6.8.2
- v6.8.1
- v6.7.2
- v6.6.1
- v6.5.1
- v6.4.0
- v6.1.2
- v6.1.1
- v6.1.0
- v6.0.1
- v5.1.2
- v5.1.1
- v5.1.0.1
- v5.1.0
- v5.0.1
- v5.0.0
- v4.1.0
- v4.0.0
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.0.0
- v2.7.4
- v2.7.3
- v2.7.2
- v2.7.1
- v2.7.0
- v2.5.1
- v2.5.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.3
- v2.0.1
- v2.0.0
- v1.5.0
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.2
- v1.2.1
- v1.2.0
- v1.0.2
- v1.0.1
- 1.0.1-beta
- dev-l10n_develop
- dev-develop
- dev-feature/sonarqube-integration
- dev-fix/update-autoRelease-action-with-bot-user
- dev-backport/adf-1541/v7.10.1.1
- dev-release-7.7.8.1
- dev-hotfix/AUT-2995/add-brazilian-portuguese-language
- dev-feat/ADF-1320-split-permission-update-into-subtasks
- dev-fix/AUT-2851/fix_unittest_php81
- dev-fix/AUT-2801/fix_unittest_for_PHP81
- dev-fix/AUT-2619-backport
- dev-release-7.7.2
- dev-fix/AUT-1825/failed_release
- dev-feature/AUT-1825/update_nb-no
- dev-feature/ADF-654-recursive-acl-gets-stuck
- dev-backport-release-2021-08-lts
- dev-release-2021-08-lts
- dev-feature/TAO-10203-advanced-search
- dev-fix/ADF-12/code_integration
- dev-release/6.8.3.1
- dev-fix/UNO-532/no-results-found-list-mode
- dev-release/5.1.2
- dev-release/6.0.1
- dev-release/6.8.2
- dev-release/6.8.1
- dev-release/6.7.2
- dev-release/6.6.1
- dev-release/6.5.1
- dev-release/6.4.0
- dev-release/6.1.2
- dev-release/6.1.1
- dev-release/6.1.0
- dev-backport/5.1.1/update-translations
- dev-fix/UNO-186/taskqueue_integration
- dev-fix/NCC-152/AssignmentsReportKeepsTracksOfAssignment
- dev-feature/UDI-23/recursive-permission-granting-on-child-classes
- dev-TDR-2/fix-code-styling
- dev-release-33/TAO-8153/translation
- dev-feature/TAO-7682-fix-nightly-tests
- dev-feature/TAO-7233/remove-controller-contructor
- dev-fix/action-serialisation
- dev-mpdeploy
- dev-dev-act
- dev-translate
- dev-read-write
- dev-OAT-55-migrate
- dev-quality
This package is auto-updated.
Last update: 2024-09-03 13:53:15 UTC
README
简单数据访问控制允许限制哪些用户可以访问哪些资源,与高级搜索兼容。
访问权限可以直接授予用户或角色,适用于拥有该特定角色的所有用户。
权限是按资源分配的,因此要取消对某个类中所有项目的写访问权限,需要在保存更改之前递归地应用新的访问权限,并勾选“递归”。
权限是可累加的,这意味着如果
- 角色A对项目1有写和读访问权限
- 用户X对项目1有读访问权限
- 并且用户X拥有角色A
则用户X将对项目1有读和写访问权限
如何启用ACL管理
为了在后台面板上看到“访问控制”按钮,需要进行一些更改。
在此启用操作
修改actions/structures.xml
文件,在actions
节点中添加属性allowClassActions="true"
<?xml version="1.0" encoding="utf-8"?> <structures> <structure> <sections> <section> <trees><!-- Something here --></trees> <actions allowClassActions="true"> <action><!-- Something here --></action> </actions> </section> </sections> </structure> </structures>
在端点上启用ACL
添加具有正确field
和grant level
的requiresRight
注释以检查权限
class MyController extends tao_actions_SaSModule { /** * @requiresRight id READ */ public function editInstance() { //... } }
在端点中内部(不使用注释)检查ACL
如果扩展tao_actions_RdfController
,我们可以使用hasWriteAccess
方法
class MyController extends tao_actions_SaSModule { public function editItem() { $item = $this->getCurrentInstance(); if ($this->hasWriteAccess($item->getUri())) { // Do something } } }
或者我们可以直接使用DataAccessControl
实现
$user = $this->getSession()->getUser(); $item = $this->getCurrentInstance(); $dataAccessControl = new \oat\tao\model\accessControl\data\DataAccessControl(); $canWrite = $dataAccessControl->hasPrivileges($user, [$item->getUri() => 'WRITE']); $canRead = $dataAccessControl->hasPrivileges($user, [$item->getUri() => 'READ']);
权限保存策略
目前,我们有以下保存/传播权限策略
- SyncPermissionsStrategy(默认):用用户提供的新的权限覆盖现有的权限。
- SavePermissionsStrategy:将现有的权限与用户提供的新的权限合并。
重要:使用递归选项保存权限非常危险,因为这会覆盖所有子类和资源的权限。
权限策略在此配置config/taoDacSimple/PermissionsService.conf.php
。示例
<?php return new oat\taoDacSimple\model\PermissionsServiceFactory( [ 'save_strategy' => 'oat\\taoDacSimple\\model\\SyncPermissionsStrategy', 'recursive_by_default' => false ] );