Skip to content

Commit

Permalink
webui: use global password policy in DiskEncryption
Browse files Browse the repository at this point in the history
  • Loading branch information
rvykydal committed Oct 20, 2023
1 parent 3a58811 commit 008745b
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 17 deletions.
8 changes: 6 additions & 2 deletions ui/webui/src/components/AnacondaWizard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ import { SystemTypeContext, OsReleaseContext } from "./Common.jsx";
const _ = cockpit.gettext;
const N_ = cockpit.noop;

export const AnacondaWizard = ({ dispatch, storageData, localizationData, onCritFail, title, conf }) => {
export const AnacondaWizard = ({ dispatch, storageData, localizationData, runtimeData, onCritFail, title, conf }) => {
const [isFormDisabled, setIsFormDisabled] = useState(false);
const [isFormValid, setIsFormValid] = useState(false);
const [requiredMountPoints, setRequiredMountPoints] = useState();
Expand Down Expand Up @@ -133,7 +133,11 @@ export const AnacondaWizard = ({ dispatch, storageData, localizationData, onCrit
...getMountPointMappingProps({ storageScenarioId })
}, {
component: DiskEncryption,
data: { storageEncryption, setStorageEncryption },
data: {
storageEncryption,
setStorageEncryption,
passwordPolicies: runtimeData.passwordPolicies,
},
...getDiskEncryptionProps({ storageScenarioId })
}]
},
Expand Down
1 change: 1 addition & 0 deletions ui/webui/src/components/app.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ export const Application = () => {
title={title}
storageData={state.storage}
localizationData={state.localization}
runtimeData={state.runtime}
dispatch={dispatch}
conf={conf}
osRelease={osRelease}
Expand Down
25 changes: 10 additions & 15 deletions ui/webui/src/components/storage/DiskEncryption.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ import CheckCircleIcon from "@patternfly/react-icons/dist/esm/icons/check-circle

import "./DiskEncryption.scss";

import { getPasswordPolicies } from "../../apis/runtime.js";

const _ = cockpit.gettext;

/* Calculate the password quality levels based on the password policy
Expand Down Expand Up @@ -113,7 +111,7 @@ const passwordStrengthLabel = (idPrefix, strength, strengthLevels) => {
// TODO create strengthLevels object with methods passed to the component ?
const PasswordFormFields = ({
idPrefix,
luksPolicies,
policy,
password,
passwordLabel,
onChange,
Expand Down Expand Up @@ -172,7 +170,7 @@ const PasswordFormFields = ({
variant={ruleLength}
component="li"
>
{cockpit.format(_("Must be at least $0 characters"), luksPolicies["min-length"].v)}
{cockpit.format(_("Must be at least $0 characters"), policy["min-length"].v)}
</HelperTextItem>
{ruleAscii &&
<HelperTextItem
Expand Down Expand Up @@ -269,32 +267,29 @@ export const DiskEncryption = ({
setIsFormValid,
storageEncryption,
setStorageEncryption,
passwordPolicies,
}) => {
const [password, setPassword] = useState(storageEncryption.password);
const [confirmPassword, setConfirmPassword] = useState(storageEncryption.confirmPassword);
const [passwordStrength, setPasswordStrength] = useState("");
const isEncrypted = storageEncryption.encrypt;
const [luksPolicies, setLuksPolicies] = useState();

useEffect(() => {
getPasswordPolicies().then(policies => setLuksPolicies(policies.luks));
}, []);
const luksPolicy = passwordPolicies.luks;

const ruleConfirmMatches = useMemo(() => {
return getRuleConfirmMatches(password, confirmPassword);
}, [password, confirmPassword]);

const ruleLength = useMemo(() => {
return luksPolicies && getRuleLength(password, luksPolicies["min-length"].v);
}, [password, luksPolicies]);
return luksPolicy && getRuleLength(password, luksPolicy["min-length"].v);
}, [password, luksPolicy]);

const ruleAscii = useMemo(() => {
return password.length > 0 && !/^[\x20-\x7F]*$/.test(password);
}, [password]);

const strengthLevels = useMemo(() => {
return luksPolicies && getStrengthLevels(luksPolicies["min-quality"].v, luksPolicies["is-strict"].v);
}, [luksPolicies]);
return luksPolicy && getStrengthLevels(luksPolicy["min-quality"].v, luksPolicy["is-strict"].v);
}, [luksPolicy]);

const encryptedDevicesCheckbox = content => (
<Checkbox
Expand All @@ -309,7 +304,7 @@ export const DiskEncryption = ({
const passphraseForm = (
<PasswordFormFields
idPrefix={idPrefix}
luksPolicies={luksPolicies}
policy={luksPolicy}
password={password}
passwordLabel={_("Passphrase")}
passwordStrength={passwordStrength}
Expand Down Expand Up @@ -357,7 +352,7 @@ export const DiskEncryption = ({
setStorageEncryption(se => ({ ...se, confirmPassword }));
}, [confirmPassword, setStorageEncryption]);

if (isInProgress || !luksPolicies) {
if (isInProgress) {
return CheckDisksSpinner;
}

Expand Down

0 comments on commit 008745b

Please sign in to comment.