added method removeAllActiveSessionsById
This commit is contained in:
parent
97e050f5c7
commit
2b98f42a5b
@ -1,5 +1,6 @@
|
|||||||
import { Text } from "@docspace/shared/components/text";
|
import { Text } from "@docspace/shared/components/text";
|
||||||
import { Button } from "@docspace/shared/components/button";
|
import { Button } from "@docspace/shared/components/button";
|
||||||
|
import { toastr } from "@docspace/shared/components/toast";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import RowWrapper from "./sub-components";
|
import RowWrapper from "./sub-components";
|
||||||
|
|
||||||
@ -19,10 +20,25 @@ const Wrapper = styled.div`
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
const AllSessionsBlock = (props) => {
|
const AllSessionsBlock = (props) => {
|
||||||
const { t, sessionData } = props;
|
const {
|
||||||
|
t,
|
||||||
|
sessionData,
|
||||||
|
removeAllActiveSessionsById,
|
||||||
|
setSessionModalData,
|
||||||
|
fetchData,
|
||||||
|
} = props;
|
||||||
|
|
||||||
const onLogoutClick = () => {
|
const isDisabled = sessionData.length > 0;
|
||||||
console.log("Logout all sessions");
|
|
||||||
|
const onLogoutClick = async () => {
|
||||||
|
try {
|
||||||
|
await removeAllActiveSessionsById(sessionData[0]?.userId);
|
||||||
|
await fetchData();
|
||||||
|
setSessionModalData([]);
|
||||||
|
toastr.success("Successfully logout all sessions");
|
||||||
|
} catch (error) {
|
||||||
|
toastr.error(error);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -36,6 +52,7 @@ const AllSessionsBlock = (props) => {
|
|||||||
onClick={onLogoutClick}
|
onClick={onLogoutClick}
|
||||||
scale={true}
|
scale={true}
|
||||||
isLoading={false}
|
isLoading={false}
|
||||||
|
isDisabled={!isDisabled}
|
||||||
/>
|
/>
|
||||||
</Wrapper>
|
</Wrapper>
|
||||||
|
|
||||||
|
@ -45,9 +45,31 @@ const StyledScrollbar = styled(Scrollbar)`
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
const UserSessionsPanel = (props) => {
|
const UserSessionsPanel = (props) => {
|
||||||
const { t, visible, setVisible } = props;
|
const {
|
||||||
|
t,
|
||||||
|
visible,
|
||||||
|
setVisible,
|
||||||
|
getUsersList,
|
||||||
|
getUserSessionsById,
|
||||||
|
setSessions,
|
||||||
|
setAllSessions,
|
||||||
|
} = props;
|
||||||
const scrollRef = useRef(null);
|
const scrollRef = useRef(null);
|
||||||
|
|
||||||
|
const fetchAndSetUserSessions = async () => {
|
||||||
|
try {
|
||||||
|
const users = await getUsersList();
|
||||||
|
const sessionsPromises = users.map((user) =>
|
||||||
|
getUserSessionsById(user.id),
|
||||||
|
);
|
||||||
|
const sessions = await Promise.all(sessionsPromises);
|
||||||
|
setSessions(sessions);
|
||||||
|
setAllSessions();
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const onClose = () => {
|
const onClose = () => {
|
||||||
setVisible(false);
|
setVisible(false);
|
||||||
};
|
};
|
||||||
@ -74,34 +96,45 @@ const UserSessionsPanel = (props) => {
|
|||||||
<StyledScrollbar ref={scrollRef}>
|
<StyledScrollbar ref={scrollRef}>
|
||||||
<UserInfoBlock {...props} />
|
<UserInfoBlock {...props} />
|
||||||
<LastSessionBlock {...props} />
|
<LastSessionBlock {...props} />
|
||||||
<AllSessionsBlock {...props} />
|
<AllSessionsBlock {...props} fetchData={fetchAndSetUserSessions} />
|
||||||
</StyledScrollbar>
|
</StyledScrollbar>
|
||||||
</Aside>
|
</Aside>
|
||||||
</StyledSessionsPanel>
|
</StyledSessionsPanel>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default inject(({ setup, dialogsStore }) => {
|
export default inject(({ setup, dialogsStore, peopleStore }) => {
|
||||||
const { userSessionsPanelVisible, setUserSessionPanelVisible } = dialogsStore;
|
const { userSessionsPanelVisible, setUserSessionPanelVisible } = dialogsStore;
|
||||||
|
const { setSessions, setAllSessions } = peopleStore.selectionStore;
|
||||||
|
const { getUsersList } = peopleStore.usersStore;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
setLogoutAllDialogVisible,
|
setLogoutAllDialogVisible,
|
||||||
setDisableDialogVisible,
|
setDisableDialogVisible,
|
||||||
userModalData,
|
userModalData,
|
||||||
sessionModalData,
|
sessionModalData,
|
||||||
|
setSessionModalData,
|
||||||
setDisplayName,
|
setDisplayName,
|
||||||
sessionStatus,
|
sessionStatus,
|
||||||
|
removeAllActiveSessionsById,
|
||||||
|
getUserSessionsById,
|
||||||
} = setup;
|
} = setup;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
userData: userModalData,
|
userData: userModalData,
|
||||||
sessionData: sessionModalData,
|
sessionData: sessionModalData,
|
||||||
|
setSessionModalData: setSessionModalData,
|
||||||
setLogoutAllDialogVisible,
|
setLogoutAllDialogVisible,
|
||||||
setDisableDialogVisible,
|
setDisableDialogVisible,
|
||||||
visible: userSessionsPanelVisible,
|
visible: userSessionsPanelVisible,
|
||||||
setVisible: setUserSessionPanelVisible,
|
setVisible: setUserSessionPanelVisible,
|
||||||
setDisplayName,
|
setDisplayName,
|
||||||
sessionStatus,
|
sessionStatus,
|
||||||
|
removeAllActiveSessionsById,
|
||||||
|
getUsersList,
|
||||||
|
getUserSessionsById,
|
||||||
|
setSessions,
|
||||||
|
setAllSessions,
|
||||||
};
|
};
|
||||||
})(
|
})(
|
||||||
withTranslation(["Settings", "Profile", "Common"])(
|
withTranslation(["Settings", "Profile", "Common"])(
|
||||||
|
@ -561,6 +561,10 @@ class SettingsSetupStore {
|
|||||||
return api.settings.getUserSessionsById(userId);
|
return api.settings.getUserSessionsById(userId);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
removeAllActiveSessionsById = (userId) => {
|
||||||
|
return api.settings.removeAllActiveSessionsById(userId);
|
||||||
|
};
|
||||||
|
|
||||||
removeAllSessions = () => {
|
removeAllSessions = () => {
|
||||||
return api.settings.removeAllActiveSessions();
|
return api.settings.removeAllActiveSessions();
|
||||||
};
|
};
|
||||||
|
@ -904,6 +904,14 @@ export function getUserSessionsById(userId) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function removeAllActiveSessionsById(userId) {
|
||||||
|
return request({
|
||||||
|
method: "put",
|
||||||
|
url: `/security/activeconnections/logoutall/${userId}`,
|
||||||
|
data: { userId },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function removeAllActiveSessions() {
|
export function removeAllActiveSessions() {
|
||||||
return request({
|
return request({
|
||||||
method: "put",
|
method: "put",
|
||||||
|
Loading…
Reference in New Issue
Block a user