@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
32 lines (30 loc) • 1.47 kB
JavaScript
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 };