模拟MongoDB / MongooseJS中的Slack团队模型

时间:2016-03-02 22:59:15

标签: javascript security mongoose permissions ecmascript-6

我想创建一个类似于Slack的团队设置(https://get.slack.help/hc/en-us/articles/201314026-Roles-and-permissions-in-Slack)的数据模型和模式,其中有一些用户可以拥有的角色,每个级别具有更高的权限。反过来,每个角色都可以执行某些操作,最高级别可以执行所有操作,而最低级别的角色只能对团队的某些部分进行最小的只读访问。

我如何在MongooseJS中模拟类似的架构?例如,如果我有组织架构:

import mongoose, { Schema } from 'mongoose';

const options = {
  "collection": "organizations"
};

const organizationSchema = new Schema({
  name: { type: String, required: true, default: '', unique: true },
  members:   [{ type: Schema.Types.ObjectId, ref: 'User' }],
  created: { type: Date, required: false, default: Date.now },
  updated: { type: Date, required: false, default: Date.now }
}, options);

对于每个角色,我应该有一个单独的字段,例如ownersguests等,从那里,我将如何定义该角色可以访问的内容以及它可以执行的操作?我正在寻找一种特定的实施解决方案,它可以最大限度地提高安全性,同时允许明确分离角色和权限。

编辑:

后来我意识到我们所谈论的是RBAC(基于角色的访问控制)和团队​​环境的组合,所以我真正想要的是一种实现基于团队的RBAC的方法,其中用户角色根据上下文而变化他们目前所在的团队。

0 个答案:

没有答案