FastAdmin后台的数据隔离方案
FastAdmin后台的数据隔离,这个场景最近经常遇到,一个系统分了好多个角色/端,每个角色/端的权限不同,能看到的数据也就不同,这就涉及到数据隔离。
举个简单例子吧,用户角色为平台+业务员+机构+学员的系统,后台角色如下:
1. 系统的最高权限是平台端,能看到所有数据;
2. 业务员负责开拓机构,他能看到机构的数据;
3. 机构发展学员,能看到机构下的学员数据。
Home of Little Jelly
FastAdmin后台的数据隔离,这个场景最近经常遇到,一个系统分了好多个角色/端,每个角色/端的权限不同,能看到的数据也就不同,这就涉及到数据隔离。
举个简单例子吧,用户角色为平台+业务员+机构+学员的系统,后台角色如下:
1. 系统的最高权限是平台端,能看到所有数据;
2. 业务员负责开拓机构,他能看到机构的数据;
3. 机构发展学员,能看到机构下的学员数据。
我们知道FastAdmin后台列表的操作按钮可以根据条件显示或隐藏,而一列一列的字段是否也可以呢?
答案是可以!
流程:
使用FastAdmin要做好日志记录,以便在出问题时好排查,特别是生产环境上。
有两种日志记录的方式:
FastAdmin后台的列表,在操作批量更新时(包括Switch切换),可能会出现”你没有权限访问”的错误提示,这种情况下一般是使用非最高权限管理员操作时发生的。
首先在`菜单规则`中排查一下是否授权了该管理员所在的角色组该菜单的`批量更新`权限,如果有,那就可能是所要更新的字段的问题了。
FastAdmin后台多表联查时报错 `Integrity constraint violation: 1052 Column ‘status’ in where clause is ambiguous`。
意思是字段`status`在查询时是不明确的,起因是我在后台控制器的index方法中使用了多表关联查询,而且几个表中几乎都有status字段。
FastAdmin后台编辑文本时,我用的是免费插件summernote,它可以生成富文本框。
但由此也带来一个问题,想清空时使用`$(“#c-content”).val(”)` 或`$(‘#c-content’).html(”)`是不行的。
我们知道FastAdmin中可以使用command作为定时任务去执行一些操作,其目录是`application/admin/command`。
一般情况下不用传什么参数过去,但某些场景下是需要的,比如按分类按用户去执行任务的时候。
具体实现如下:
FastAdmin小知识点。
1. 后台菜单缓存
后台菜单是有缓存的,通过菜单规则的添加编辑操作可以清除缓存,当刷新后台页面时,缓存会重建。也可以直接清除那个缓存键,代码里是这么写的:
FastAdmin的数据库配置是写在`application/database.php`里的,默认连接的就是这个数据库。那么有没有办法连接并调用其他的数据库呢?
答案是可以,比如我要操作WordPress的数据库。步骤如下:
1. 首先复制`database.php`并改名为`database_wp.php`;
上一篇讲了如何在FastAdmin的表格上给每一行加自定义的按钮,分为Dialog和Ajax两种,这篇着重讲下Dialog这种形式。
Dialog是打开一个弹窗,弹窗里是Html,类似添加/编辑的页面。
这里我们还是以实名认证操作为例。
先贴下field operate的代码