根据一个简单的例子,理一理salesforce的权限!
例1
一所中学最近举行了期中考试,老师们需要记录他们的成绩。
表:期中考试
项目:姓名,班级,语文成绩,数学成绩,总分等。
用户权限需求:
- 学生:只能查看成绩,不能增删改数据。
- 语文老师:可以编辑学生的语文成绩,不能编辑数学成绩,不能增删数据。
- 班主任:可以查看编辑所有同学的所有成绩,也可以增删数据。
实现方法
实现上面需求的方法有很多,下面是其中一种。
1.profile准备
做两个profile,一个是老师,一个是学生。可以从標準 Platform ユーザー复制。
2.user作成
做三个user,语文老师和班主任老师使用老师profile,学生用学生profile。并开启代理login功能(上一篇写过)。
3.设置权限
1)老师权限
profile权限
首先设置老师profile的权限,设置profile时可以设置一个最小的权限,然后利用变更set增加权限。
-
object权限
两种老师都可以参照和修改表,所以我们先只给object一个参照和编辑的权限。
-
项目级别的权限
项目级别的权限先只给参照,因为这里只举例语文老师可以改语文分,以后有可能会有数学老师需要改数学分,所以项目级别的权限我们用权限set来添加。
权限set
-
语文老师
语文老师的权限set只需要给一个项目层级的权限,也就是语文成绩的编辑权限。设好之后把语文老师添加到这个权限set上。
看下语文老师的效果。没有作成删除权限,只能编辑语文成绩。
后面如果需要数学老师编辑数学分数也是同样的道理。
-
班主任老师
班主任老师的权限很多,对object的参照编辑作成删除,对所有项目的参照编辑。同样,设定好之后把班主任老师放到这个变更set里。
来看班主任老师的效果。可以新规编辑删除,并且所有项目都可以编辑。
2) 学生权限
学生的权限是最小的,只能查看成绩,所以只需要加object的参照权限。
设定完成后,来看看学生的效果。不能新规编辑删除,只能参照。
例2
上面我们利用profile和权限set完成了对object和项目权限的设定,下面来对数据的权限进行设定。
需求
- 学生只能看自己班级的数据。
- 语文老师能改自己所教的班级的数据,可以看所有班级的数据。
实现方法
对于数据的共有药考虑使用共有设定和共有规则。
1.共有设定
共有设定有非公开,公开/参照のみ,公开/参照・更新可能。
- 非公开:只能操作所有者是自己的数据。
- 公开/参照のみ:是可以看到所有人做的数据,但是不能编辑。
- 公开/参照・更新可能:可以更新所有人做的数据。
我们把共有设定设置为非公开。
2.共有规则
共有规则的共有先是role或者公开group。
学生
把学生按照班级分组,每个班级是一个group。
把班级是1的数据共有给一班同学这个group,共有参照权限。
⚠️注意:数式项目和参照项目不能作为条件项目。
这样设置之后,学生1只能看班级是1的数据。
语文老师
按照班级分group,一班老师group中有一班语文老师A,数学老师A,英语老师A等。同时语文老师A还教3班,那么三班老师group中也加语文老师A。
然后把班级是1的数据共有给一班老师group,把班级是3的数据共有给三班老师group,共有参照更新权限。
设定之后,语文老师有了一班和三班数据的权限。