Мне нужно упростить области действия на основе данных
Я нашел библиотеку, но она не охватывает мою проблему
https://www.npmjs.com/package/@authx / области действия
Вот упрощенная функция из этой библиотеки
function simplify(collection) {
return collection.reduce(s, []).reduceRight(s, []).sort();
}
Пример моей области видимости:
const scopes = {
'context1.a:action1.update': [ 'superAdmin', 'admin'],
'context1.a:action1.delete': [ 'superAdmin'],
'context1.a:action1.retrieve': [ 'superAdmin', 'user', 'admin'],
'context2.a:action1.create': [ 'superAdmin'],
'context2.a:action1.update': [ 'superAdmin', 'admin'],
'context2.a:action1.delete': [ 'superAdmin'],
'context2.a:action1.retrieve': [ 'superAdmin', 'user'],
'context2.a:action2.create': [ 'superAdmin', 'admin'],
'context2.b:action2.create': [ 'superAdmin', 'admin'],
'context2.b:action2.update': [ 'superAdmin', 'admin'],
'context2.b:action2.delete': [ 'superAdmin', 'admin'],
'context2.b:action2.retrieve': [ 'superAdmin', 'admin'],
'context3:action2.read': [ 'superAdmin', 'user', 'admin'],
'context3:action2.write': [ 'superAdmin', 'user', 'admin'],
'context4:action3.get': [ 'superAdmin', 'admin'],
'context4:action3.take': [ 'superAdmin', 'admin'],
'context4:action4.delete': [ 'superAdmin', 'admin'],
'context5.test1:action5.get': [ 'superAdmin', 'user'],
'context5.test1:action6.post': [ 'superAdmin', 'user'],
'context5.test2:action5.get': [ 'superAdmin', 'user'],
'context5.test3:action6.post': [ 'superAdmin', 'user'],
}
Как я могу упростить это так?
const simplifyScopes = {
superAdmin: [
'**:**'
],
admin: [
'context1.*:action1.update',
'context1.*:action1.retrieve',
'context2.*:action1.update',
'context2.*:action1.retrieve',
'context2.*:action2.*',
'context3:action2.*',
'context4:**'
],
user: [
'context1.a:action1.retrieve',
'context2.a:action1.retrieve',
'context3:action2.*',
'context5.*:**',
],
}