feat: Add ability to unlink SSO from user

This commit is contained in:
Maksim Eltyshev
2026-01-26 21:18:32 +01:00
parent ee917c545c
commit 2b699f77f4
39 changed files with 238 additions and 9 deletions
@@ -30,6 +30,7 @@ const StepTypes = {
EDIT_PASSWORD: 'EDIT_PASSWORD',
EDIT_ROLE: 'EDIT_ROLE',
API_KEY: 'API_KEY',
UNLINK_SSO: 'UNLINK_SSO',
ACTIVATE: 'ACTIVATE',
DEACTIVATE: 'DEACTIVATE',
DELETE: 'DELETE',
@@ -58,6 +59,16 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
[userId, dispatch],
);
const handleUnlinkSsoConfirm = useCallback(() => {
dispatch(
entryActions.updateUser(userId, {
isSsoUser: false,
}),
);
onClose();
}, [userId, onClose, dispatch]);
const handleActivateConfirm = useCallback(() => {
dispatch(
entryActions.updateUser(userId, {
@@ -106,6 +117,10 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
openStep(StepTypes.API_KEY);
}, [openStep]);
const handleUnlinkSsoClick = useCallback(() => {
openStep(StepTypes.UNLINK_SSO);
}, [openStep]);
const handleActivateClick = useCallback(() => {
openStep(StepTypes.ACTIVATE);
}, [openStep]);
@@ -142,6 +157,17 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
);
case StepTypes.API_KEY:
return <ApiKeyStep userId={userId} onBack={handleBack} onClose={onClose} />;
case StepTypes.UNLINK_SSO:
return (
<ConfirmationStep
title="common.unlinkSso"
content="common.areYouSureYouWantToUnlinkSsoFromThisUser"
buttonType="negative"
buttonContent="action.unlinkSso"
onConfirm={handleUnlinkSsoConfirm}
onBack={handleBack}
/>
);
case StepTypes.ACTIVATE:
return (
<ConfirmationStep
@@ -232,6 +258,14 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
context: 'title',
})}
</Menu.Item>
{user.isSsoUser && !isCurrentUser && (
<Menu.Item className={styles.menuItem} onClick={handleUnlinkSsoClick}>
<Icon name="unlink" className={styles.menuItemIcon} />
{t('action.unlinkSso', {
context: 'title',
})}
</Menu.Item>
)}
{!isCurrentUser && (
<>
<Menu.Item