Это будет отличаться для каждого пользователя в зависимости от его роли. Я хочу создать объект, который может выглядеть так:
let permissions = {
'state': {
'tool': ['subTool1', 'subTool2']
}
}
Пример:
roles = ['NY_email_submit', 'NY_email_approve', 'NY_build_submit', 'NY_build_view', 'DC_email_submit']
let permissions = {
'NY': {
'email': ['submit', 'approve'],
'build': ['submit', 'view']
},
'DC': {
'email': ['submit']
}
};
Я просматриваю список с именованными ролями, переданными в, который содержит сломанные строки вверх как state_tool_subTool
.
Я бы хотел, чтобы у него не было дубликатов. Например, если следующая роль пользователя прошла через l oop с указанным выше объектом, это NY_build_approve, я хотел бы просто добавить утверждение в список по адресу ['build'].
В настоящее время у меня есть это который работает неправильно.
roles.forEach(role => {
role = role.split('_');
let state = role[0];
let tool = role[1];
let subTool = role[2];
if ([state] in permissions) {
permissions[state] = { [`${tool}`]: [subTool] };
} else {
//permissions[state][`${tool}`].push(subTool);
}
});