Я создаю веб-приложение в NodeJS (используя TypeScript) и MongoDB (используя mongoose).Выполнение пользовательских разрешений
В моем приложении у меня есть 6 типов разрешений. Для простоты можно использовать P1, P2, ..., P6 для представления моих разрешений.
Кроме того, приложение имеет несколько организаций.
Каждый пользователь приложения относится к одной организации и может иметь несколько разрешений (P1-P6) для каждой организации (не обязательно тот, к которому он принадлежит).
Например:
- пользователь U1 'принадлежит к организации 'О1', имеет разрешение P1, P3 в организациях 'O1' и разрешение P2, P6 в организациях 'O2'.
- Пользователь 'U2' принадлежит к организации 'O2', имеет разрешение P1 в организации 'O2'.
- Пользователь 'U3' принадлежит к организации 'O1', не имеет разрешений.
Я пытаюсь реализовать эту структуру в пользовательской схеме (используя схему мангуста) и нуждаюсь в некоторых мнениях о моих реализациях.
Это мой пользователь схема:
var userSchema: mongoose.Schema = new mongoose.Schema({
_id: {
type: String
},
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
mail: {
type: String,
required: true,
unique: true
},
organization: { // User's organization
type: mongoose.Schema.Types.ObjectId,
ref: 'Organization'
},
permissions: [{
organization: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Organization'
},
permissions: [{
type: String,
enum: [
Permission.P1,
Permission.P2,
Permission.P3,
Permission.P4,
Permission.P5,
Permission.P6,
]
}]
}]
});
Для перечисления разрешений я использую:
export enum Permission {
P1 = <any>'P1',
P2 = <any>'P2',
P3 = <any>'P3',
P4 = <any>'P4',
P5 = <any>'P5',
P6 = <any>'P6',
}
Я использую это перечисление как строковые значения, потому что я считаю, что лучше иметь строковое значение а не только значения числа перечислений (1-6). Конечно, имена прав (P1-P6) заменяются реальным именем разрешения - например, P1 является Администратором.
Я не уверен в моей текущей реализации и хотел бы получить некоторые мнения о том, делаю ли я добро, или что-то изменить.
Пожалуйста, не стесняйтесь критиковать мой код и образ мыслей.
Thanks,
Ron.
Каждая организация может изменить права доступа пользователей, поэтому этот метод не очень подходит мне ... – Ron537