Примечание. Я задал этот вопрос под lodash, так как я уверен, что он может помочь мне решить эту проблему красиво, но пока не надавил на нее свой палец.
У меня есть объект, описывающий разные роли пользователя и их разрешения;
У меня будет что-то вроде 10-15 ролей, определенных "как это" (это не отражает код приложения, но сама проблема):
var role1 = {
views: {
v1: {access: true},
v2: {access: false},
v#: {access: false}
}
}
var role2 = {
views: {
v1: {access: false},
v2: {access: true},
v3: {access: true},
}
}
Пользователь, подключенный к сети, будет иметь несколько ролей; В этом примере это может быть ['role1', 'role2']
, и из этого мне нужно построить единственный объект permissions
, который будет представлять собой комбинацию всех реквизитов, определенных во всех ролях пользователя.
В основном это "белый список", где все "истинные" свойства должны переопределять все, что было определено как ложное. Таким образом, ожидаемый результат должен быть:
permissions = {
views: {
v1: {access: true},
v2: {access: true},
v2: {access: true}
}
}
Я не слишком уверен, как справиться с этим, не полагаясь на сумасшедшие вложенные циклы
Здесь начальная точка в JSBin: http://jsbin.com/usaQejOJ/1/edit?js,console
Спасибо за вашу помощь!