设计+ STI +授权

时间:2012-01-16 14:51:25

标签: ruby-on-rails authentication devise authorization sti

我有以下情况:

我的应用有多种类型的用户:OwnerTeam MemberCollaboratorClient Guest (访客类型与此问题无关)

这些是不同模型之间的联系:

  • Owner belongs_to Account
  • Account has_many Team Members
  • Account has_many Projects
  • Projects habtm (或hmt) Collaborators
  • Project habtm (或mht) Clients

我的验证功能需要四个关键功能。授权:

  • 能够将协作者升级为团队成员(这意味着将所有habtm删除到Projects,并将belongs_to添加到帐户
  • 能够为不同的用户制定不同的设计策略(业主可注册,客户不具备)
  • 拥有不同的登录页面,只接受一部分用户(为所有者/团队成员/合作者和客户单独登录)
  • 能够使用Account.owner,Account.team_members,Project.collaborators和Project.clients调用不同的用户子集

我已经解决了几个问题,但我不确定哪种解决方案在我的情况下效果最好。

  • 起初我考虑过使用Devise进行授权和身份验证,但我认为我最好使用像CanCan这样的授权部分。
  • 我还考虑过为每种用户类型使用一个表,但这会使初始创建后更改角色变得更加困难
  • 我现在正在配合使用STI,因为TeamMember<用户,客户<用户等等。但由于客户和合作者属于项目和业主,团队成员属于一个账户,我不确定这将与STI轻松合作,而且我也没有真正找到关于STI设计的好例子。 / LI>

任何想法如何解决这种情况?

0 个答案:

没有答案