mirror of
https://github.com/n8n-io/n8n.git
synced 2025-01-17 07:39:44 -08:00
596c472ecc
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com> Co-authored-by: Val <68596159+valya@users.noreply.github.com> Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in> Co-authored-by: Valya Bullions <valya@n8n.io> Co-authored-by: Danny Martini <danny@n8n.io> Co-authored-by: Danny Martini <despair.blue@gmail.com> Co-authored-by: Iván Ovejero <ivov.src@gmail.com> Co-authored-by: Omar Ajoue <krynble@gmail.com> Co-authored-by: oleg <me@olegivaniv.com> Co-authored-by: Michael Kret <michael.k@radency.com> Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com> Co-authored-by: Elias Meire <elias@meire.dev> Co-authored-by: Giulio Andreini <andreini@netseven.it> Co-authored-by: Giulio Andreini <g.andreini@gmail.com> Co-authored-by: Ayato Hayashi <go12limchangyong@gmail.com>
24 lines
870 B
TypeScript
24 lines
870 B
TypeScript
import type { Scope, ScopeLevels, GlobalScopes, MaskLevels } from './types';
|
|
|
|
export function combineScopes(userScopes: GlobalScopes, masks?: MaskLevels): Set<Scope>;
|
|
export function combineScopes(userScopes: ScopeLevels, masks?: MaskLevels): Set<Scope>;
|
|
export function combineScopes(
|
|
userScopes: GlobalScopes | ScopeLevels,
|
|
masks?: MaskLevels,
|
|
): Set<Scope> {
|
|
const maskedScopes: GlobalScopes | ScopeLevels = Object.fromEntries(
|
|
Object.entries(userScopes).map((e) => [e[0], [...e[1]]]),
|
|
) as GlobalScopes | ScopeLevels;
|
|
|
|
if (masks?.sharing) {
|
|
if ('project' in maskedScopes) {
|
|
maskedScopes.project = maskedScopes.project.filter((v) => masks.sharing.includes(v));
|
|
}
|
|
if ('resource' in maskedScopes) {
|
|
maskedScopes.resource = maskedScopes.resource.filter((v) => masks.sharing.includes(v));
|
|
}
|
|
}
|
|
|
|
return new Set(Object.values(maskedScopes).flat());
|
|
}
|