在后台管理系统中,前面我们讲了菜单权限鉴定和按钮权限鉴定,今天我们讲讲如何对系统中的各个公司的数据进行数据分割,当然,如果系统只是本公司或者一个公司的员工看,那就不需要进行数据分割了,直接菜单和按钮的权限控制就可以控制几乎所有的数据权限了。若是此系统是这种情况:最高级别的是本公司,为admin账户,可以看所有用本公司产品的其他公司的产品数据,相当于帮他们维护,而他们也需要看自己公司产品的数据,而我们公司又有多个合作的公司。那我们就必须对其他的公司的数据进行分割,让其他公司的数据相互不能看。而我们可看可管理所有公司数据。
从业务需求来讲,此功能并没有什么用户和数据的交互,所以,此逻辑代码是在后台完成。我们在此只梳理下实现这功能的逻辑。
我们可把数据分割的逻辑分为两部分:
1.除admin账户的其他所有账户部分:因为admin是本公司独有的账户名,其他账户都是通过该账户授权,然后其他公司再通过这个授权账户创建普通账户。这部分数据分割的逻辑就是根据设备数据选择所属组织来决定,即每条数据的创建,都会选择所属组织,包括获取所属组织的数据的接口,用户登入之后也像菜单和按钮鉴权一样,选择此角色属于哪个组织(即公司),然后把这角色分配给人员,当用户登入之后,后台根据用户去获取该用户所属哪个组织,在每次获取数据的接口,用人员所属的组织和设备所属的组织去匹配,若和设备所属组织和人员所属组织一样,则显示该设备。
2.admin账户本身:因为创建所有的设备数据或者其他数据,都要从先创建组织,角色选定组织,组织绑定人员开始。所以在做完这些操作之后的所有创建的数据都可按照第一种方式取判定。但是当创建组织,获取组织,创建角色本身时,此时并没有选择组织,所以当创建此时的数据,一刷新,获取数据因找不到所属组织,都会不显示。所以这个地方我们应该加个特殊的条件判断,获取这三种数据时,若账户名为admin,则显示所有数据,若不是admin,则按第一种方式进行数据分割。
问题:当我们在后端数据库录入所有菜单数据,在菜单授权时获取这些数据让用户勾取授权,但不是所有用户都能看这所有的菜单,不能看这些菜单的当然不能让其勾取,如何解决?
在此提供一种解决办法:
可在前端进行判断,当用户登入账户为admin时,调用获取所有菜单数据的接口,展示所有菜单,当登入为非admin账户时,调用获取该账户下所绑定的角色所授权的菜单数据。这样既能限定每个账户给子用户菜单授权时只能在当前菜单权限下勾选。
按照此逻辑已经成功实现不同账户绑定不同的公司,则可显示不同公司的数据,目前并未出现BUG,若后续出现BUG会继续跟进,也欢迎小伙伴们进行指正优化。