【问题标题】:Rails 4 Role Managment for SaaS based Application基于 SaaS 的应用程序的 Rails 4 角色管理
【发布时间】:2015-02-24 04:34:03
【问题描述】:

我的应用程序具有以下结构,它是一个基于 SaaS 的应用程序。

User hasMany Companies
Company hasMany Projects
Project hasMany Users

数据库结构

users(id, name, email, password, ....)
companies(id, name, ..., created_by)
company_members(id, company_id, user_id, is_admin)
events(id, name, company_id, created_by)
event_members(id, company_id, event_id, user_id, is_admin)

在任何给定时间,例如 Facebook 帐户从用户切换到主页,应用程序中的用户只能看到与一家公司相关的内容。所以我需要保存一个他在哪个公司工作的实例,并记住它以便在他下次登录时将他登录。

我还需要持续保存用户正在获取仅与该特定公司相关的内容。

现在让我们考虑用户 - A、B、C、D

Company X has A,B,D as its members - (Admin for the company - A)
Company Y has A,B,C,D as its members - (Admin for the company - B,D)
===========
Company X has Project X1, X2
Project X1 has A,D as its members (project manager for the project is D)
Project X2 has A,B,D as its members (project manager for the project is A)
===========
Company Y has Project Y1, Y2
Project Y1 has A,B,D as its members (project manager for the project is B)
Project Y2 has A,B,C,D as its members (project manager for the project is A,B)

问题

我对应用程序的数据库设计没问题,但我正在尝试弄清楚如何实施授权和角色管理来处理 3 个级别的不同角色。用户可以是公司的普通会员,但也可以是他参与的特定项目的项目经理。但在另一个项目中,他只是一个项目成员。同一用户可以是其他公司所有者等。

【问题讨论】:

    标签: ruby-on-rails database session database-design session-cookies


    【解决方案1】:

    假设您有 3 个工作级别 RoleID 1 - Projmanager RoleID 2- Proj_Member 您可以保留一个名为 User access table, schema 的单独表 Tbl_Role_Manager:RoleID,RoleDefined TBl_Proj_Details:ProjID、ProjName Tbl_User_Access:用户 ID、用户名、User_Role_ID、Proj_Code_ID 通过这种方式,您始终可以在显示页面内容之前对这些表格进行一轮检查。

    例如: 取决于代码或过程中的 user_Role 句柄并显示页面 从中选择 User_role Tbl_User_Access T, TBl_Proj_Details V,Tbl_Role_Manager R 其中 V.ProjID=T.Proj_Code_ID 和 R.RoleID=V.User_Role_ID

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多