Skip to content

Commit

Permalink
fix(RHINENG-15120): Fix rule patching in policies (#2356)
Browse files Browse the repository at this point in the history
  • Loading branch information
adonispuente authored Jan 28, 2025
1 parent e463e04 commit 64c6bbb
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 5 deletions.
43 changes: 38 additions & 5 deletions src/PresentationalComponents/RulesTable/RulesTableRest.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ const RulesTable = ({
onSelect,
defaultTableView = 'tree',
reportTestResult,
valueOverrides,
...rulesTableProps
}) => {
const internalSelectedState = useState([]);
Expand Down Expand Up @@ -77,6 +78,7 @@ const RulesTable = ({
...rule,
itemId,
valueDefinitions: ruleValueDefinitions,
valueOverrides,
profile: { id: policyId, name: policyName },
ruleValues: ruleRuleValues,
};
Expand All @@ -98,23 +100,53 @@ const RulesTable = ({

return Row;
}, [
policyId,
policyName,
onRuleValueReset,
rules,
ruleValues,
policyId,
policyName,
onValueOverrideSave,
onRuleValueReset,
valueOverrides,
]);

const itemsWithValueDefinitions = useMemo(
() => rules?.map((rule) => ({ ...rule, valueDefinitions })),
[rules, valueDefinitions]
() =>
rules?.map((rule) => {
const updatedRule = { ...rule };

const updatedValueDefinitions = valueDefinitions?.data?.map(
(definition) => {
const matchingRule = rule.value_checks.find(
(checkId) => checkId === definition.id
);

if (matchingRule && valueOverrides) {
const override = Object.values(valueOverrides).find(
(overrideObj) => overrideObj[matchingRule]
);
if (override) {
definition.value = override[matchingRule];
}
}
return definition;
}
);
updatedRule.rowProps = {
valueDefinitions: {
data: updatedValueDefinitions,
},
};

return updatedRule;
}),
[rules, valueOverrides, valueDefinitions]
);

return (
<ComplianceTable
aria-label="Rules Table"
items={itemsWithValueDefinitions}
valueOverrides={valueOverrides}
columns={columns}
isStickyHeader
filters={{
Expand Down Expand Up @@ -189,6 +221,7 @@ RulesTable.propTypes = {
total: propTypes.number,
defaultTableView: propTypes.string,
reportTestResult: propTypes.object,
valueOverrides: propTypes.object,
};

export default RulesTable;
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ const RuleValueEdit = ({ rule, onValueChange, onRuleValueReset }) => {
key={`rule-value-${idx}`}
isOpen={isOpen}
value={
valueDefinition.value ||
ruleValues?.[valueDefinition?.id] ||
ruleValues?.[valueDefinition?.refId]
}
Expand Down
4 changes: 4 additions & 0 deletions src/PresentationalComponents/Tailorings/Tailorings.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import NoTailorings from './NoTailorings';
* @param [props.rulesPageLink]
*
* @param {object} props.selectedVersionCounts An object containing minor version as a key and count as a value. Helps to render the system count badge in tab headers.
* @param props.valueOverrides
* @returns {React.ReactElement}
*
* @category Compliance
Expand Down Expand Up @@ -147,6 +148,7 @@ import NoTailorings from './NoTailorings';
preselected,
enableSecurityGuideRulesToggle,
selectedVersionCounts,
valueOverrides,
...rulesTableProps
}) => {
const {
Expand Down Expand Up @@ -240,6 +242,7 @@ import NoTailorings from './NoTailorings';
preselected?.[tab.id] ||
preselected?.[tab.os_minor_version],
rulesPageLink: rulesPageLink,
valueOverrides,
}}
/>
</Tab>
Expand Down Expand Up @@ -273,6 +276,7 @@ Tailorings.propTypes = {
preselected: propTypes.object,
enableSecurityGuideRulesToggle: propTypes.bool,
selectedVersionCounts: propTypes.object,
valueOverrides: propTypes.object,
};

export default Tailorings;
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const TailoringTab = ({
onSelect,
preselected,
enableSecurityGuideRulesToggle,
valueOverrides,
}) => {
const tableState = useFullTableState();
const openRuleGroups = tableState?.tableState?.['open-items'];
Expand Down Expand Up @@ -150,6 +151,7 @@ const TailoringTab = ({
shouldSkip.securityGuide.valueDefinitions === false &&
valueDefinitions === undefined,
}}
valueOverrides={valueOverrides}
onRuleValueReset={onRuleValueReset}
onValueOverrideSave={onValueSave}
onSelect={onSelect ? onSelectRule : undefined}
Expand Down Expand Up @@ -189,6 +191,7 @@ TailoringTab.propTypes = {
onValueOverrideSave: propTypes.func,
preselected: propTypes.object,
enableSecurityGuideRulesToggle: propTypes.bool,
valueOverrides: propTypes.object,
};

const TailoringTabProvider = (props) => (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ export const EditPolicyProfilesRulesRest = ({
preselected={preselected}
enableSecurityGuideRulesToggle
rulesPageLink={true}
valueOverrides={valueOverrides}
onValueOverrideSave={onValueOverrideSave}
selectedVersionCounts={osMinorVersionCounts.reduce(
(prev, cur) => ({
Expand Down

0 comments on commit 64c6bbb

Please sign in to comment.