我想创建一个类似于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);
对于每个角色,我应该有一个单独的字段,例如owners
,guests
等,从那里,我将如何定义该角色可以访问的内容以及它可以执行的操作?我正在寻找一种特定的实施解决方案,它可以最大限度地提高安全性,同时允许明确分离角色和权限。
编辑:
后来我意识到我们所谈论的是RBAC(基于角色的访问控制)和团队环境的组合,所以我真正想要的是一种实现基于团队的RBAC的方法,其中用户角色根据上下文而变化他们目前所在的团队。