/* eslint-disable */
// @ts-nocheck
import PolicyEvaluationResponse from "@keycloak/keycloak-admin-client/lib/defs/policyEvaluationResponse";
import { useMemo } from "react";
import { Alert, List, ListItem, Text } from "../../../shared/@patternfly/react-core";
import { useTranslation } from "react-i18next";
import { sortBy } from "lodash-es";
type PermissionEvaluationResultProps = {
evaluateResult: PolicyEvaluationResponse;
};
export const PermissionEvaluationResult = ({
evaluateResult,
}: PermissionEvaluationResultProps) => {
const { t } = useTranslation();
const evaluatedResults = evaluateResult.results || [];
const evaluatedResult = evaluatedResults[0] || {};
const alertTitle =
evaluatedResult.resource?.name ?? t("permissionEvaluationAlertTitle");
const alertVariant =
evaluateResult.status === "PERMIT" ? "success" : "warning";
const evaluatedAllowedScopes = useMemo(
() => sortBy(evaluatedResult.allowedScopes || [], "name"),
[evaluatedResult],
);
const evaluatedDeniedScopes = useMemo(
() => sortBy(evaluatedResult.deniedScopes || [], "name"),
[evaluatedResult],
);
const evaluatedPolicies = useMemo(
() => sortBy(evaluatedResult.policies || [], "name"),
[evaluatedResult],
);
const evaluatedPermission = function (title: string, status: string) {
const permissions = evaluatedPolicies.filter((p) => p.status === status);
if (permissions.length == 0) {
return;
}
return (
<>
{t(title)}:
{permissions.map((p) => (
{t("evaluatedPolicy", {
name: p.policy?.name,
status: p.status,
})}
))}
>
);
};
return (
{evaluatedAllowedScopes.length > 0 && (
<>
{t("grantedScope")}
{evaluatedAllowedScopes.map((scope) => (
{scope.name}
))}
>
)}
{evaluatedDeniedScopes.length > 0 && (
<>
{t("deniedScope")}
{evaluatedDeniedScopes.map((scope) => (
{scope.name}
))}
>
)}
{evaluatedPermission("grantedPermissions", "PERMIT")}
{evaluatedPermission("deniedPermissions", "DENY")}
);
};