【发布时间】: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