Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | 18x 9x 17x 17x 17x 17x 17x 17x 9x 12x 12x 12x 12x 9x 96x 96x 96x 96x 96x 96x 114x | import { customInstance } from "@services/api";
import {
AccessPoliciesResponse,
IUpdatedData,
PermissionResponse,
} from "./types";
import { hashData } from "../utils";
import sha1 from "sha1";
const hashingFunction = (item: IUpdatedData) => item.id;
export const getAssignedPermissions = async (
baseURL: string,
searchQuery: string,
) => {
let url = baseURL;
Eif (!url.includes("?")) url += "?";
url += `&filter=isAttached:true%3BisGlobal:false`;
const data: AccessPoliciesResponse = await customInstance({
url: encodeURIComponent(url),
method: "GET",
});
Iif (!data?.data) {
return {
searchQuery,
total: data?.total || 0,
data: {},
};
}
return {
searchQuery,
total: data.total,
data: hashData(data.data.map(permissionParser), hashingFunction),
};
};
export const getGlobalPermissions = async (
baseURL: string,
searchQuery: string,
) => {
const data: AccessPoliciesResponse = await customInstance({
url: encodeURIComponent(baseURL),
method: "GET",
});
Iif (!data?.data || !data?.data?.length) {
return {
searchQuery,
total: data.total,
data: {},
};
}
const mergedData = data.data.reduce(mergeDuplicates, {});
return {
searchQuery,
total: Object.keys(mergedData).length,
data: mergedData,
};
};
const mergeDuplicates = (
acc: Record<string, IUpdatedData>,
permission: PermissionResponse,
) => {
const hashedKey = sha1(permission.id);
const parsedValue = permissionParser(permission);
Iif (acc[hashedKey] && permission.isGlobal) return acc;
Iif (acc[hashedKey] && !permission.isGlobal)
return { ...acc, [hashedKey]: parsedValue };
Eif (permission.isGlobal) {
return {
...acc,
[hashedKey]: {
...parsedValue,
isAttached: false,
},
};
}
return {
...acc,
[hashedKey]: {
...parsedValue,
},
};
};
const permissionParser = (permission: PermissionResponse): IUpdatedData => ({
id: permission.id,
group: permission.categoryName.toLowerCase(),
permissionName: permission.name,
description: permission?.description || "",
actionName: permission.actionName,
resourceName: permission.resourceName,
isGlobal: permission.isGlobal,
isAttached: permission.isAttached,
isDeny: permission.isDeny,
});
|