Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions web/messages/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
"state_active": "Active",
"state_default": "Default",
"state_enabled": "Enabled",
"state_not_configured": "Not configured",
"state_smtp_not_configured": "SMTP configuration has not been completed by the administrator.",
"state_step": "Step {step}",
"state_pending": "Pending",
"state_enrolled": "Enrolled",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,6 @@ export const ProfileAuthCard = () => {
user.username,
authUsername,
]);

return (
<ProfileCard id="profile-auth-card">
<h2>{m.profile_auth_card_title()}</h2>
Expand Down Expand Up @@ -293,20 +292,17 @@ export const ProfileAuthCard = () => {
testId="totp-row"
/>
<Divider />
{smtpEnabled && (
<>
<FactorRow
icon="mail"
availability="both"
title={m.profile_auth_card_2fa_email()}
enabled={user.email_mfa_enabled}
isDefault={user.mfa_method === 'Email'}
menu={emailMenuItems}
testId="email-codes-row"
/>
<Divider />
</>
)}
<FactorRow
icon="mail"
availability="both"
title={m.profile_auth_card_2fa_email()}
enabled={user.email_mfa_enabled}
isDefault={user.mfa_method === 'Email'}
menu={emailMenuItems}
testId="email-codes-row"
smtpDisabled={!smtpEnabled}
/>
<Divider />
<FactorRow
icon="access-settings"
availability="sso"
Expand Down Expand Up @@ -407,6 +403,7 @@ interface FactorRowProps {
availability: 'sso' | 'both' | 'mfa';
menu?: MenuItemsGroup | null;
testId?: string;
smtpDisabled?: boolean;
}

const FactorRow = ({
Expand All @@ -417,6 +414,7 @@ const FactorRow = ({
menu,
testId,
availability,
smtpDisabled,
}: FactorRowProps) => {
const menuItems = useMemo(() => (menu ? [menu] : undefined), [menu]);

Expand All @@ -430,6 +428,10 @@ const FactorRow = ({
return 'SSO';
}
}, [availability]);
const showSmtpDisabledWarning = useMemo(
() => isPresent(smtpDisabled) && smtpDisabled,
[smtpDisabled],
);

return (
<div className="factor-row" data-testid={testId}>
Expand All @@ -438,7 +440,12 @@ const FactorRow = ({
<Icon icon={icon} />
<p className="factor-name">{title}</p>
<div className="badges">
{!enabled && <Badge variant="warning" text={m.state_disabled()} />}
{showSmtpDisabledWarning && (
<Badge variant="critical" text={m.state_not_configured()} />
)}
{!enabled && !showSmtpDisabledWarning && (
<Badge variant="warning" text={m.state_disabled()} />
)}
{enabled && <Badge variant="success" text={m.state_enabled()} />}
{isDefault && <Badge variant="neutral" text={m.state_default()} />}
</div>
Expand All @@ -447,7 +454,11 @@ const FactorRow = ({
<div className="fill"></div>
<TooltipProvider>
<TooltipTrigger>
<p className="availability">{availabilityText}</p>
<p className="availability">
{showSmtpDisabledWarning
? m.state_smtp_not_configured()
: availabilityText}
</p>
</TooltipTrigger>
<TooltipContent>
<p>{m.test_placeholder()}</p>
Expand All @@ -456,7 +467,9 @@ const FactorRow = ({
</div>
</div>
<div className="controls">
{isPresent(menuItems) && <IconButtonMenu icon="menu" menuItems={menuItems} />}
{isPresent(menuItems) && !showSmtpDisabledWarning && (
<IconButtonMenu icon="menu" menuItems={menuItems} />
)}
</div>
</div>
);
Expand Down
Loading