Rails 4基于SaaS的应用程序的角色管理

问题描述:

我在我的应用程序中有一个基于SaaS的应用程序的以下结构。Rails 4基于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个不同角色的级别。用户可以是公司的普通会员,但可以是他参与的特定项目的项目经理。但在另一个项目中,他只是一个项目成员。同一用户可以是另一个公司的老板等

让我们看看你有3个职位级别 角色ID 1- Projmanager 角色ID 2- Proj_Member 你可以继续叫用户访问表一个单独的表,架构 Tbl_Role_Manager:角色ID, RoleDefined TBl_Proj_Details:ProjID,ProjName Tbl_User_Access:Userid,Username,User_Role_ID,Proj_Code_ID 通过这种方式,您可以在显示页面内容之前始终对这些表格进行一轮检查。

对于离: 根据USER_ROLE处理中的代码或程序,并从 Tbl_User_Access T,TBl_Proj_Details V,Tbl_Role_Managerř 其中V.ProjID = T.Proj_Code_ID 和R.RoleID显示页面 选择USER_ROLE = V.User_Role_ID