流星角色和链接集合

时间:2018-04-23 08:06:59

标签: mongodb meteor alanning-roles

关于角色,我有一个概念问题。我不太熟悉数据库设计或访问控制。假设我有4个系列。

  • 用户
  • 公司
  • 设备
  • 位置

    1. 用户可以注册。
    2. 用户将被添加到公司。
    3. 用户可以使用公司ID访问所有设备和位置。
  • 验证注册用户是否属于公司的好方法是什么?我正在考虑手动验证,因为并非公司中的每个人都可以访问。但任何聪明的想法都会受到赞赏。

  • 收藏品设备和地点包含属于不同公司的文件。这些系列可以变得非常大。为每家公司设置“设备集合”是否明智?

  • 我应该为每家公司创建一个组并将用户添加到正确的组吗?

  • 将馆藏/文档链接到用户/公司的最佳方式是什么?

还有其他想法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用:https://github.com/alanning/meteor-roles

我用它来验证流星中的角色。 “公司”系列中会有一个条目,因此您可以拥有公司ID。随着流星角色的使用,我认为你的任务很容易。在例子中。

用户收藏将具有:

_id:
Name:
Role : [ //owner , employee ]
Company ID: 

如果您将角色和公司ID作为一个数组来处理单个用户记录的多个公司,那么这取决于您,从而使其从长远来看变得更加灵活。

接下来将在您的用户集合中帮助您轻松跟踪角色。 IE。

    isAdmin(companyId) {
    if(isValidRolesData(this.roles,'default-group'))
        return this.roles['default-group'].indexOf(`${companyId}-admin`) > -1;
},

/**
 * Check if a user is Staff
 * 
 * @param {any} facilityid
 * @returns
 */
isStaff(companyId) {
    if(isValidRolesData(this.roles,'default-group'))
        return this.roles['default-group'].indexOf(`${companyId}-staff`) > -1;
},

/**
 * Check if a user is Receptionist
 * 
 * @param {any} facilityid
 * @returns
 */
isReceptionist(companyId) {
    if(isValidRolesData(this.roles,'default-group'))
        return this.roles['default-group'].indexOf(`${companyId}-receptionist`) > -1;
},

通过这种流程,我猜你可以实现你需要的确切内容:)