added method removeAllActiveSessionsById

This commit is contained in:
Elyor Djalilov 2024-06-08 16:58:09 +05:00
parent 97e050f5c7
commit 2b98f42a5b
4 changed files with 68 additions and 6 deletions

View File

@ -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>

View File

@ -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"])(

View File

@ -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();
}; };

View File

@ -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",