Ruby on Rails 中的用户层次结构设计
我有一个需要身份验证的应用程序,并且有一个用户模型。有 4 级授权,规则如下:
- 1 级用户可以创建/编辑/删除所有 2,3 和 4 级用户。
- 2 级用户可以创建 3 级和 4 级用户,并且只能编辑他们拥有的用户。
- 3级和4级无权创建/编辑/删除用户。
- 更新:3 级和 4 级用户可以有多个 2 级父用户。
除此之外,我希望所有用户都能够通过单个界面登录。
是否有处理这种层次结构的模式?使用诸如 cancan 之类的授权插件将允许我定义不同级别的授权,但不能定义授权之间的关系不同的用户。
本质上,我想要一种设计,使我能够编写如下所示的控制器代码:
@level_two_users = current_user.find_all_my_level_two_users
谢谢
I have an application that requires authentication, and have a User model. There are 4 levels of authorisation with the following rules:
- Level 1 users can create/edit/delete all level 2,3 and 4 users.
- Level 2 users can create level 3 and 4 users, and edit only those users they own.
- Levels 3 and 4 have no authorisation to create/edit/delete users.
- UPDATE: Level 3 and 4 users could have multiple level 2 parent users.
In addition to this, I want all users to be able to login through a single interface.
Are there any patterns for dealing with such a hierarchy? using an authorisation plugin such as cancan will allow me to define the different levels of authorisation, but not the relationships between the different users.
Essentially I would like a design that would enable me to write controller code such as this:
@level_two_users = current_user.find_all_my_level_two_users
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以向用户模型添加属性
level
以及查询允许用户的方法。要获取级别为 X 的所有用户,只需使用类似
User.find_all_by_level(2)
顺便说一句的查询。谁创建 1 级用户? ;-)
You could add a attribute
level
to your user model and a method to query for allowed users.To get all users with level X just use a query like
User.find_all_by_level(2)
Btw. who creates level 1 users? ;-)