# access-control-template ## 构建配置 1.在build.gradle中,增加`copyAccessControl` ```gradle task copyAccessControl(type: Copy) { from "../access-control-template/yjs" into "./build/output/" } ``` 2. 在`buildZip`任务中添加依赖: ```gradle task buildZip(type: Zip, dependsOn: [...,"copyAccessControl"]) { ... ``` 3. 在`main.yjs`中添加RocksDB权限。 `@Permission("RocksDB")` ## ABAC.yjs的使用方式 1.在main.yjs中增加`import`语句,并在`onCreate`方法中,添加初始化调用。 ```javascript import "actemplate/ABAC.yjs"; function onCreate(arg) { ... initABAC(requester); } ``` 2.针对需要访问控制的函数,使用`@Access`注解 ```javascript @Access({"ACFunction":"accept"}) export function xxx ``` 3.初始化权限。 初始状态下,仅`owner`(启动者) 拥有全部权限。 通过调用`addPermission`和`removePermission`可对相应公钥的用户作授权。 ## RBAC.yjs的使用方式 1.配置角色-权限。在`main.yjs` 下创建 `role.json`。 参考role.template.json。例如以下配置文件定义了两种角色`userAdmin`和`authorizedUser`。 启动者自动默认为超级管理员,有全部权限。 ```json { "userAdmin": ["addRole","removeRole"], "authorizedUser": ["hello"] } ``` 2.在main.yjs中增加`import`语句,并在`onCreate`方法中,添加初始化调用。 ```javascript import "actemplate/RBAC.yjs"; function onCreate(arg) { ... initRBAC(requester, Global.Resources.loadAsString("/role.json")); } ``` 2.针对需要访问控制的函数,使用`@Access`注解 用法同ABAC。 ```javascript @Access({"ACFunction":"accept"}) export function xxx ``` 3.初始化权限。 初始状态下,仅`owner`(启动者) 拥有全部权限。 通过调用`addRole`和`removeRole`可对相应公钥的用户作授权。