功能简介
互动白板默认所有权限校验都是不启用,即所有用户都是具有操作互动白板的能力;如业务场景中需要对用户权限进行限制,则可以参考本文档进行用户操作权限控制。
版本支持
iOS | Android | Windows | Mac OS | Web | 小程序 |
2.8.0.170+ | 2.8.0.216+ | 2.8.0.317+ | 2.8.0.154+ | 2.8.0+ | 2.8.0+ |
使用指南
互动白板提供了两种权限控制方式,包含基础权限控制和高级权限控制,具体请看下面说明。
基础权限控制
基础权限是互动白板内置的一套权限控制,通过初始化参数 drawEnable 和 setDrawEnable 接口实现,主要包含以下权限:
权限名 | 描述 |
Element::Add::* | 新增元素权限,如画笔工具,几何图形工具,以及调用 addElement 接口 |
Element::Delete::* | 删除元素权限 |
Element::Select::* | 选中元素权限 |
Element::Move::* | 移动元素权限 |
Element::Update::* | 更新元素权限,l例如改变元素颜色,大小等 |
Element::Scale::* | 缩放元素权限 |
Element::Rotate::* | 旋转元素权限 |
Background::Update::* | 更新背景图权限 |
Board::Switch::* | 翻页白板权限 |
Board::Clear::* | 清空白板元素权限,对应 clear 接口 |
File::Clear::* | 清空文件内的元素权限,对应 clearFileDraws 接口 |
如不允许用户操作白板,则可以在初始化参数将 drawEnable 设置 false,也可以调用 setDrawEnable(false) 来实现,当在使用互动白板过程中,则需要授予用户 A 操作白板的权限,则可以让用户 A 调用 setDrawEnable(true) 来实现。
高级权限控制
如果基础权限控制不能满足业务场景,需要更精准的权限控制,则可以使用高级权限控制接口来实现。
默认场景下,用户是具有所有白板的操作权限,如需要限制用户的某一个操作,则启用对应的接口进行权限校验来实现。
启用操作白板权限校验
1. 该接口只对本地设置有效。
2. 调用该接口,设置项对应的权限将启用校验。只有校验通过,设置项对应的白板操作才允许执行。
参数名 | 类型 | 描述 |
permissions | Array.<string> | 权限列表,可支持通配符 *,查阅目前 支持的权限 |
filters | Array.<string> | 条件列表,可支持通配符 *,查阅目前支持的条件 |
示例1:
房间里有教师 T、学生 A。赋予 T 文件,白板,元素操作权限,禁用 A 的全部权限。
teduBoard.enablePermissionChecker(['File::*::*', 'Board::*::*', 'Element::*::*'], ['operator/T']); //
T 和 A 都调用。解读:
当老师 T 添加课件的时候('File::*::*'),则会根据权限配置进行校验,对应的操作权限只有用户T('operator/T),此时添加课件的用户是 T,权限配置也是允许 T 添加,则此时权限校验通过,T 能正常添加课件。
当学生 A 添加课件的时候('File::*::*'),则会根据权限配置进行校验,对应的操作权限只有用户 T('operator/T),此时添加课件的用户是 A,但权限配置只允许 A 添加,此时权限校验不通过,A 不能添加课件,并触发 TEB_BOARD_PERMISSION_DENIED 无操作权限的事件。
禁用操作白板的权限校验
1. 该接口只对本地设置有效。
2. 调用该接口,设置项对应的权限将不做校验,权限将恢复成默认开启,调用者将获得对应的操作权限。
参数名 | 类型 | 描述 |
permissions | Array.<string> | 权限列表,可支持通配符 *,查阅目前 支持的权限 |
示例2:
接着上面的示例1:学生 A 此时是没有权限添加课件,添加白板,添加元素(画笔,直线等)的权限的。
如果此时需要允许学生 A 可以使用画笔功能,则学生 A 可以调用 teduBoard.disablePermissionChecker(['Element::*::*']) 接口来关闭对元素操作的校验。
解读:
对元素操作的校验权限禁用,则对元素操作的时候不校验权限,不校验权限就是默认有操作元素的权限,这样就实现了学生 A 可以实现操作画笔的需求。
如果此时需要允许学生 A 可以添加课件,则学生 A 可以调用 teduBoard.disablePermissionChecker(['File::*::*']) 接口来关闭对文件操作的校验。
解读:
对文件操作的校验权限禁用,则对文件操作的时候不校验权限,不校验权限就是默认有操作文件的权限,这样就实现了学生 A 可以实现操作文件的需求。
权限变更事件
调用 enablePermissionChecker 和 disablePermissionChecker 接口会触发该事件。
// web端示例
teduBoard.on(TEduBoard.EVENT.TEB_BOARD_PERMISSION_CHANGED, (permissions, filters) => {
});
无操作权限事件
当用户操作白板没有对应的操作权限时,则会触发该事件。
// web端示例
teduBoard.on(TEduBoard.EVENT.TEB_BOARD_PERMISSION_DENIED, (permission) => {});
权限列表
接口名 | 权限名 | 描述 |
setGlobalBackgroundColor | Background::Update::Color | 设置全局背景色 |
setBackgroundColor | Background::Update::Color | 设置单页白板背景色 |
setGlobalBackgroundPic | Background::Update::Image | 设置全局背景图 |
clear | Board::Clear | 清空白板 |
setBackgroundImage | Background::Update::Image | 设置单页白板背景图 |
setBackgroundH5 | Background::Update::Frame | 设置单页白板背景 H5 |
undo | Board::Undo::* | 撤销 |
redo | Board::Redo::* | 恢复 |
addBoard | Board::Add | 新增白板 |
deleteBoard | Board::Delete | 删除白板 |
prevStep | Board::Switch::Step | 上一步 |
nextStep | Board::Switch::Step | 下一步 |
prevBoard | Board::Switch::Page | 上一页 |
nextBoard | Board::Switch::Page | 下一页 |
gotoBoard | Board::Switch::Page | 翻页 |
setBoardRatio | Board::Update::Ratio | 设置白板比例 |
setBoardScale | Board::Scale::* | 设置白板缩放 |
gotoStep | Board::Switch::Step | 跳转动画步数 |
setBoardContentFitMode | Board::Update::ContentFitMode | 设置白板内容填充方式 |
addTranscodeFile | File::Add | 新增转码课件 |
addImagesFile | File::Add | 新增图片组课件 |
deleteFile | File::Delete | 删除课件 |
switchFile | File::Switch | 切换课件 |
clearFileDraws | File::Clear | 清空文件上的涂鸦 |
addVideoFile | File::Add | 新增视频课件 |
playVideo | File::Update::Video | 播放视频课件 |
pauseVideo | File::Update::Video | 暂停视频课件 |
seekVideo | File::Update::Video | 调整视频课件进度 |
muteVideo | File::Update::Video | 静音视频课件 |
resetVideoProgress | File::Update::Video | 重置视频课件进度 |
playAudio | File::Update::Audio | 播放音频元素 |
pauseAudio | File::Update::Audio | 暂停音频元素 |
seekAudio | File::Update::Audio | 调整音频元素进度 |
muteAudio | File::Update::Audio | 静音音频元素 |
setAudioVolume | File::Update::Audio | 设置音频元素音量 |
setFileScale | File::Update::Scale | 对文件进行缩放 |
addH5File | File::Add | 新增 H5 文件 |
removeElement | Element::Delete | 删除元素 |
addElement | Element::Add | 新增元素,包含使用画笔工具,几何工具,调用 addElement 接口等 |
setTextValue | Element::Update | 设置文本元素内容 |
useMathTool | Element::Add::MathTool | 使用数学教具 |
updateElementById | Element::Update | 更新元素位置,大小,颜色等 |
条件列表
条件名 | 类型 | 描述 |
operator | string | 操作人 |
creator | string | 创建人 |
// 示例一:允许操作人userId是T,A,B三个用户['operator/T,A,B'] // 配置具名的userId// 示例二:允许所有操作人['operator/*'] // 配置通配符// 示例三:禁止所有人操作['operator/'] // 不配置userId,则表示所有人都匹配不上// 示例四:允许操作创建人是A,B两个用户添加的文件或者添加的元素['creator/A,B']// 示例五:允许操作所有创建人添加的文件或者添加的元素['creator/*']
使用示例
### 场景1房间里有教师T、学生A。赋予 T 文件,白板,元素操作权限,禁用 A 的全部权限/** T/A 调用 */enablePermissionChecker(['File::*::*', 'Board::*::*', 'Element::*::*'], ['operator/T']);### 场景2房间里有教师T、学生A、学生B。TAB 均赋予元素的操作权限/** 方式一 */// 三人均设置enablePermissionChecker(['Element::*::*'], ['operator/A,B,T']);/** 方式二 */// T 调用enablePermissionChecker(['Element::*::*'], ['operator/T']);// A 调用enablePermissionChecker(['Element::*::*'], ['operator/A']);// B 调用enablePermissionChecker(['Element::*::*'], ['operator/B']);### 场景3房间里有教师T、学生A、学生B。T能删除(包括调用接口removeElement,橡皮擦,键盘del键)所有人创建的元素(T自己、A、B),A只能删除A自己创建的元素, 不能删除其他人的创建的元素, B不能删除任何人的元素;// T 调用enablePermissionChecker(['Element::Delete::*'], ['creator/*']);// A 调用enablePermissionChecker(['Element::Delete::*'], ['creator/A']);// B 调用enablePermissionChecker(['Element::Delete::*'], ['creator/']);### 场景4房间里有学生A、学生B、学生C。只允许 A 删除 A 和 B 创建的元素, 不能删除 C 创建元素;// A B C用户均按下面方式设置enablePermissionChecker(['Element::Delete::*'], ['operator/A', 'creator/A,B']);### 场景5房间里有教师T、学生A、学生B。T 只能操作 B 创建的元素,// T 调用enablePermissionChecker(['Element::*::*'], ['creator/B']);### 场景6禁用当前用户的全部操作// 所有用户调用enablePermissionChecker(['*::*::*'], ['operator/']);// 'operator/' 表示对于操作者(operator)这个条件,符合的值是空的,意味着没有操作者能够被允许通过这个权限校验### 场景7启用当前用户的全部操作// 所有用户调用enablePermissionChecker(['*::*::*'], ['operator/*']);// 'operator/*' 表示对于操作者(operator)这个条件,符合的值是任意的,意味着所有操作者能够被允许通过这个权限校验### 场景8房间里有学生A。学生A允许跳转动画步数,但不能翻页// A 调用enablePermissionChecker(['Board::Switch::Step'], ['operator/A']);// A 调用enablePermissionChecker(['Board::Switch::Page'], ['operator/']);### 场景8房间内有学生A。不允许学生A操作尺规工具,只允许观看// A 调用enablePermissionChecker(['Element::Update::MathTool'], ['operator/']);
附录1:drawEnable 的实现原理
初始化参数 drawEnable 和接口 setDrawEnable 包含以下权限:
'Element::Add::*','Element::Delete::*','Element::Move::*','Element::Select::*','Element::Update::*','Element::Scale::*','Element::Rotate::*','Background::Update::*','Board::Switch::*','Board::Clear::*','File::Clear::*'
当用户 A drawEnable 设置为 true 时,则等价于执行以下权限配置:
const permissions = ['Element::Add::*','Element::Delete::*','Element::Move::*','Element::Select::*','Element::Update::*','Element::Scale::*','Element::Rotate::*','Background::Update::*','Board::Switch::*', 'Board::Clear::*','File::Clear::*'];teduBoard.enablePermissionChecker(permissions, ['operator/A', 'creator/A']); // A 用户具有以上操作权限
当用户 A drawEnable 设置为 false 时,则等价于执行以下权限配置:
const permissions = ['Element::Add::*','Element::Delete::*','Element::Move::*','Element::Select::*','Element::Update::*','Element::Scale::*','Element::Rotate::*','Background::Update::*','Board::Switch::*', 'Board::Clear::*','File::Clear::*'];teduBoard.enablePermissionChecker(permissions, ['operator/', 'creator/']); // 没有用户拥有以上权限