UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

32 lines (30 loc) 1.47 kB
import { extractRequiredDynamicVariableContextForPermissions } from "../utils/extract-required-dynamic-variable-context.js"; import { fetchDynamicVariableData } from "../utils/fetch-dynamic-variable-data.js"; import { fetchRawPermissions } from "../utils/fetch-raw-permissions.js"; import { getPermissionsForShare } from "../utils/get-permissions-for-share.js"; import { processPermissions } from "../utils/process-permissions.js"; //#region src/permissions/lib/fetch-permissions.ts async function fetchPermissions(options, context) { const permissions = await fetchRawPermissions({ ...options, bypassMinimalAppPermissions: options.bypassDynamicVariableProcessing ?? false }, context); if (options.accountability && !options.bypassDynamicVariableProcessing) { const dynamicVariableContext = extractRequiredDynamicVariableContextForPermissions(permissions); const permissionsContext = await fetchDynamicVariableData({ accountability: options.accountability, policies: options.policies, dynamicVariableContext }, context); const processedPermissions = processPermissions({ permissions, accountability: options.accountability, permissionsContext }); if (options.accountability.share && (options.action === void 0 || options.action === "read")) return await getPermissionsForShare(options.accountability, options.collections, context); return processedPermissions; } return permissions; } //#endregion export { fetchPermissions };