背景
SaaS系统中,资源权限目前是这样的设计逻辑:一个账户下面会有多层组织,组织是有上下级的关系。上层组织的成员是天然能看到下层组织的资源信息的。目前我们有这么个需求,就是想支持组织级别的个性化配置需求,比如:系统logo、系统名称、各种阈值等。
设计原则
如何从简洁实用又极具扩展性方面进行设计,各方讨论了很久。对业务方的需求,我们进行了总结归纳如下:
我分为两个域进行阐述,这样大家比较好理解:
1、管理域具有统一管理的能力。
如果我是一个上级组织的管理员,我可以对当前组织进行配置,我可以覆盖以下任意存在的配置项。此时我就是上帝,我最大我说的算。
如果我是一个下级组织的小小操作者,可能是街道管理员,那么我可以对我所管理的街道进行相关的配置。我是有自尊心的,我希望得到适当的尊重。如果别人覆盖了我的配置,需要告诉我,从我的配置页面是可以看到的。
2、使用域,配置优先级采用就近原则
组织树的每节点都可以进行参数配置,配置的优先级采用就近的原则,以实现配置个性化需求。
3、引入全选、只选概念,以解决组织变更问题
配合tree_path使用,这样能解决全选情况下,组织树变动后,授权别信息无法自动更新的问题。授权表中,资源存储的是组织的tree_path。
总结
简约的设计而不简单,多思索多总结,总不会有啥坏处的!
网友评论