假设我有复杂的用户管理系统。在这种情况下,用户可以与组相关,组可以与角色相关。此外,组可以包含其他组。
我假设在“帐户管理”情况下,当前用户不能失去允许执行“帐户管理”过程的角色。我想知道如何实现该用例的最佳方式。
让我们尝试考虑简单的场景:例如,在下面的层次结构中,用户通过组 G3 和 G5 与我们的角色连接。
---USER---
| |
G1 G3----
| | |
G2 G5 G6
|
REQUIRED_ROLE
在 G3 组版期间,有人尝试将 G3 组成员更改为 G7(为了简化无角色)
---USER---
| |
G1 G3----
| | |
G2 G7 G6
提交该更改将从用户层次结构中删除“帐户管理”角色,并且用户将无法编辑帐户。
我唯一的想法是将所有组和角色读入内存并尝试手动更改所有依赖项以检查提交后是否仍会分配角色。但该解决方案可能会成为未来潜在错误的来源,而且并不优雅。有谁知道如何以优雅的方式解决它?