文档中心>互动白板>高级功能>白板操作权限控制

白板操作权限控制

最近更新时间:2024-09-11 09:08:12

我的收藏

功能简介

互动白板默认所有权限校验都是不启用,即所有用户都是具有操作互动白板的能力;如业务场景中需要对用户权限进行限制,则可以参考本文档进行用户操作权限控制。

版本支持

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) 来实现。
如您想了解 drawEnable 的实现原理,请在阅读完 高级权限控制 后,再查看 附录1:drawEnable 的实现原理 章节。

高级权限控制

如果基础权限控制不能满足业务场景,需要更精准的权限控制,则可以使用高级权限控制接口来实现。
默认场景下,用户是具有所有白板的操作权限,如需要限制用户的某一个操作,则启用对应的接口进行权限校验来实现。

启用操作白板权限校验

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/']); // 没有用户拥有以上权限