【问题标题】:Meteor-Roles and linked collectionsMeteor-Roles 和链接的集合
【发布时间】:2018-04-23 16:34:49
【问题描述】:

关于角色,我有一个概念问题。我对数据库设计或访问控制不是很熟悉。假设我有 4 个集合。

  • 用户
  • 公司
  • 设备
  • 地点

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

  • 馆藏设备和地点保存属于不同公司的文件。这些集合可以变得非常大。每个公司都有一个“设备集合”是否明智?

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

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

还有其他想法吗?

谢谢。

【问题讨论】:

    标签: mongodb meteor alanning-roles


    【解决方案1】:

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

    我用它来验证流星中的角色。 “公司”集合中会有一个条目,因此您可以拥有公司 ID。通过使用流星角色,我认为完成您的任务会很容易。在示例中。

    用户集合应该有:

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

    您是否将角色和公司 ID 设为数组以处理多个公司的单个用户记录,从而使其从长远来看更加灵活,这取决于您。

    接下来将在您的用户集合中创建一个助手以轻松跟踪角色。即。

        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;
    },
    

    通过这种流程,我想您可以实现所需的确切目标:)

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 2015-08-25
      • 2015-10-08
      • 2015-02-23
      • 2016-02-01
      • 2015-01-30
      相关资源
      最近更新 更多