From ebab99d6fc3f8df01238c558be1bbb6b8101fe0a Mon Sep 17 00:00:00 2001 From: Scenery <1507337624@qq.com> Date: Mon, 13 May 2024 21:08:08 +0800 Subject: [PATCH] feat: update token storage --- .../src/components/Auth/AuthCheck/index.tsx | 38 ++++++++++++-- .../src/components/Auth/TeamCheck/index.tsx | 2 +- .../linked/components/LinkCard/index.tsx | 4 +- .../SettingPage/account/password/index.tsx | 1 + .../SettingPage/hooks/useLeaveTeamModal.tsx | 3 +- .../page/SettingPage/layout/mobile/index.tsx | 5 +- .../pc/components/Header/moreAction.tsx | 3 +- .../src/page/UserAuth/AuthRedirect/index.tsx | 4 +- apps/agent/src/router/buildRouter.tsx | 9 ++-- apps/agent/src/router/config.tsx | 50 +++++++++++-------- apps/agent/src/router/constants.ts | 9 ++++ apps/agent/src/utils/routeHelper/hook.ts | 2 +- apps/agent/src/utils/routeHelper/index.ts | 3 -- 13 files changed, 88 insertions(+), 45 deletions(-) diff --git a/apps/agent/src/components/Auth/AuthCheck/index.tsx b/apps/agent/src/components/Auth/AuthCheck/index.tsx index 672ce513..62860fb1 100644 --- a/apps/agent/src/components/Auth/AuthCheck/index.tsx +++ b/apps/agent/src/components/Auth/AuthCheck/index.tsx @@ -1,17 +1,45 @@ +import { isEqual } from "lodash-es" import { FC } from "react" import { Navigate } from "react-router-dom" -import { useGetAuthSessionQuery } from "@illa-public/user-data" +import { TipisTrack } from "@illa-public/track-utils" +import { useGetUserInfoQuery } from "@illa-public/user-data" +import { getAuthToken } from "@illa-public/utils" +import i18n from "@/i18n" import { AUTH_PAGE_PATH } from "@/router/constants" import { BaseProtectComponentProps } from "@/router/interface" +import { + getSessionCurrentUserInfo, + setSessionCurrentUserInfo, +} from "@/utils/storage/user" const AuthCheck: FC = (props) => { - const { data, isLoading, error, isSuccess } = useGetAuthSessionQuery(null) + const token = getAuthToken() + const { data, isSuccess, error } = useGetUserInfoQuery(null) + const cacheCurrentUserInfo = getSessionCurrentUserInfo() - if (error) { + if (!token) { + return + } + + if (error && "status" in error) { return } - if (!isLoading && !data?.session) { - return + + if (data) { + const currentLng = i18n.language + if (!isEqual(cacheCurrentUserInfo, data)) { + setSessionCurrentUserInfo(data) + TipisTrack.identify(data.userID, { + nickname: data.nickname, + email: data.email, + language: data.language, + }) + } + + if (data.language && data.language !== currentLng) { + i18n.changeLanguage(data.language) + return null + } } return isSuccess ? props.children : null diff --git a/apps/agent/src/components/Auth/TeamCheck/index.tsx b/apps/agent/src/components/Auth/TeamCheck/index.tsx index 55d5b1a5..b5d871fb 100644 --- a/apps/agent/src/components/Auth/TeamCheck/index.tsx +++ b/apps/agent/src/components/Auth/TeamCheck/index.tsx @@ -3,8 +3,8 @@ import { FC } from "react" import { Navigate, useParams } from "react-router-dom" import { TipisTrack } from "@illa-public/track-utils" import { useGetTeamsInfoAndCurrentIDQuery } from "@illa-public/user-data" +import { EMPTY_TEAM_PATH } from "@/router/constants" import { BaseProtectComponentProps } from "@/router/interface" -import { EMPTY_TEAM_PATH } from "@/utils/routeHelper" import { getSessionCurrentTeamInfo, setSessionCurrentTeamInfo, diff --git a/apps/agent/src/page/SettingPage/account/linked/components/LinkCard/index.tsx b/apps/agent/src/page/SettingPage/account/linked/components/LinkCard/index.tsx index f5df3fbb..d1eaf0d9 100644 --- a/apps/agent/src/page/SettingPage/account/linked/components/LinkCard/index.tsx +++ b/apps/agent/src/page/SettingPage/account/linked/components/LinkCard/index.tsx @@ -4,8 +4,8 @@ import { useTranslation } from "react-i18next" import { useNavigate } from "react-router-dom" import { useCancelLinkedMutation } from "@illa-public/user-data" import { useLazyGetOAuthURIQuery } from "@illa-public/user-data" +import { SETTING_PASSWORD_PATH } from "@/router/constants" import { OAUTH_REDIRECT_URL } from "@/utils/oauth" -import { PASSWORD_PATH } from "@/utils/routeHelper" import { LinkCardProps } from "./interface" import { buttonWrapperStyle, @@ -37,7 +37,7 @@ export const LinkCard: FC = (props) => { open: false, }) - navigate(PASSWORD_PATH) + navigate(SETTING_PASSWORD_PATH) }, onCancel: () => { tipsModal.update({ diff --git a/apps/agent/src/page/SettingPage/account/password/index.tsx b/apps/agent/src/page/SettingPage/account/password/index.tsx index d6d7a5b2..b2cfb016 100644 --- a/apps/agent/src/page/SettingPage/account/password/index.tsx +++ b/apps/agent/src/page/SettingPage/account/password/index.tsx @@ -10,6 +10,7 @@ import { useGetUserInfoQuery } from "@illa-public/user-data" import ChangePassword from "./components/ChangePassword" import FirstSetPassword from "./components/FirstSetPassword" +// current not support yet const PasswordSettingPage: FC = () => { const { data: userInfo } = useGetUserInfoQuery(null) const { t } = useTranslation() diff --git a/apps/agent/src/page/SettingPage/hooks/useLeaveTeamModal.tsx b/apps/agent/src/page/SettingPage/hooks/useLeaveTeamModal.tsx index 255fe515..15e5dbd3 100644 --- a/apps/agent/src/page/SettingPage/hooks/useLeaveTeamModal.tsx +++ b/apps/agent/src/page/SettingPage/hooks/useLeaveTeamModal.tsx @@ -13,7 +13,8 @@ import { useRemoveTeamMemberByIDMutation, } from "@illa-public/user-data" import store from "@/redux/store" -import { EMPTY_TEAM_PATH, getChatPath } from "@/utils/routeHelper" +import { EMPTY_TEAM_PATH } from "@/router/constants" +import { getChatPath } from "@/utils/routeHelper" import { removeLocalTeamIdentifier, setLocalTeamIdentifier, diff --git a/apps/agent/src/page/SettingPage/layout/mobile/index.tsx b/apps/agent/src/page/SettingPage/layout/mobile/index.tsx index 3471e3f0..6b97841b 100644 --- a/apps/agent/src/page/SettingPage/layout/mobile/index.tsx +++ b/apps/agent/src/page/SettingPage/layout/mobile/index.tsx @@ -2,8 +2,6 @@ import Icon from "@ant-design/icons" import { FC } from "react" import { useMatch, useNavigate } from "react-router-dom" import { PreviousIcon } from "@illa-public/icon" -import { useGetCurrentTeamInfo } from "@/utils/team" -import { getChatPath } from "../../../../utils/routeHelper" import { SettingLayoutProps } from "../interface" import { applyContentStyle, @@ -16,11 +14,10 @@ const SettingMobileLayout: FC = (props) => { const { children, withoutPadding } = props const navigate = useNavigate() const matchMobileSettingNav = useMatch("/setting") - const currentTeamInfo = useGetCurrentTeamInfo() const clickBackBtn = () => { if (matchMobileSettingNav) { - navigate(getChatPath(currentTeamInfo?.identifier ?? "")) + navigate(-1) } else { navigate("/setting") } diff --git a/apps/agent/src/page/SettingPage/team/components/Member/pc/components/Header/moreAction.tsx b/apps/agent/src/page/SettingPage/team/components/Member/pc/components/Header/moreAction.tsx index 826a5908..3727fd62 100644 --- a/apps/agent/src/page/SettingPage/team/components/Member/pc/components/Header/moreAction.tsx +++ b/apps/agent/src/page/SettingPage/team/components/Member/pc/components/Header/moreAction.tsx @@ -14,7 +14,8 @@ import { useUpdateTeamPermissionConfigMutation, } from "@illa-public/user-data" import store from "@/redux/store" -import { EMPTY_TEAM_PATH, getChatPath } from "@/utils/routeHelper" +import { EMPTY_TEAM_PATH } from "@/router/constants" +import { getChatPath } from "@/utils/routeHelper" import { removeLocalTeamIdentifier, setLocalTeamIdentifier, diff --git a/apps/agent/src/page/UserAuth/AuthRedirect/index.tsx b/apps/agent/src/page/UserAuth/AuthRedirect/index.tsx index ab36d31b..1e1b1006 100644 --- a/apps/agent/src/page/UserAuth/AuthRedirect/index.tsx +++ b/apps/agent/src/page/UserAuth/AuthRedirect/index.tsx @@ -4,6 +4,7 @@ import { Helmet } from "react-helmet-async" import { useTranslation } from "react-i18next" import { useNavigate, useSearchParams } from "react-router-dom" import { useGetAuthSessionQuery } from "@illa-public/user-data" +import { setAuthToken } from "@illa-public/utils" import TextAndLogo from "@/assets/public/textLogo.svg?react" import { AUTH_PAGE_PATH } from "@/router/constants" import { AUTH_ERROR, AUTH_ERROR_PARAMS_KEY } from "./constants" @@ -47,7 +48,8 @@ const AuthRedirect: FC = () => { if (isErrorRedirectRef.current) return if (!data?.session && !isLoading) { navigate(AUTH_PAGE_PATH) - } else { + } else if (data?.session?.access_token) { + setAuthToken(data.session.access_token) // navigate to workspace } }, [data?.session, isLoading, navigate]) diff --git a/apps/agent/src/router/buildRouter.tsx b/apps/agent/src/router/buildRouter.tsx index 2ec25b0f..ada0e651 100644 --- a/apps/agent/src/router/buildRouter.tsx +++ b/apps/agent/src/router/buildRouter.tsx @@ -1,7 +1,6 @@ import { LayoutAutoChange } from "@illa-public/layout-auto-change" import { MobileForbidden } from "@illa-public/status-page" import { RoutesObjectPro } from "./interface" -import { saveTokenToLocalStorageLoader } from "./loader/beautifyURLLoader" export const buildRouter = (config: RoutesObjectPro[]) => { return config.map((route) => { @@ -29,10 +28,10 @@ export const buildRouter = (config: RoutesObjectPro[]) => { newRouteItem.loader = async (args) => { // check login - const saveTokenLoader = saveTokenToLocalStorageLoader(args) - if (saveTokenLoader) { - return saveTokenLoader - } + // const saveTokenLoader = saveTokenToLocalStorageLoader(args) + // if (saveTokenLoader) { + // return saveTokenLoader + // } return typeof originLoader === "function" ? originLoader?.(args) diff --git a/apps/agent/src/router/config.tsx b/apps/agent/src/router/config.tsx index f0c13dd2..c4b81433 100644 --- a/apps/agent/src/router/config.tsx +++ b/apps/agent/src/router/config.tsx @@ -17,9 +17,17 @@ import { CREATE_TIPI_TEMPLATE_PATH, EDIT_FUNCTION_TEMPLATE_PATH, EDIT_TIPI_TEMPLATE_PATH, + EMPTY_TEAM_PATH, FUNCTIONS_DASHBOARD_TEMPLATE_PATH, MARKETPLACE_DETAIL_PATH, RUN_TIPI_TEMPLATE_PATH, + SETTING_ACCOUNT_PATH, + SETTING_BILLING_PATH, + SETTING_LANGUAGE_PATH, + SETTING_LINKED_PATH, + SETTING_MEMBERS_PATH, + SETTING_PATH, + SETTING_TEAM_INFO_PATH, TEAM_IDENTIFIER_TEMPLATE_PATH, TIPIS_DASHBOARD_TEMPLATE_PATH, TIPI_DETAIL_TEMPLATE_PATH, @@ -65,9 +73,9 @@ const PersonalSetting = lazy( const LanguageSetting = lazy( () => import("@/page/SettingPage/account/language"), ) -const PasswordSettingPage = lazy( - () => import("@/page/SettingPage/account/password"), -) +// const PasswordSettingPage = lazy( +// () => import("@/page/SettingPage/account/password"), +// ) const LinkedSettingPage = lazy( () => import("@/page/SettingPage/account/linked"), ) @@ -134,7 +142,7 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ ), }, { - path: "/empty-workspace", + path: EMPTY_TEAM_PATH, ProtectComponent: AuthCheck, accessByMobile: true, element: , @@ -253,7 +261,7 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ }, { - path: "/setting", + path: SETTING_PATH, accessByMobile: true, ProtectComponent: AuthCheck, element: , @@ -268,7 +276,7 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ accessByMobile: true, }, { - path: "account", + path: SETTING_ACCOUNT_PATH, element: ( }> @@ -277,7 +285,7 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ accessByMobile: true, }, { - path: "language", + path: SETTING_LANGUAGE_PATH, element: ( }> @@ -285,17 +293,17 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ ), accessByMobile: true, }, + // { + // path: SETTING_PASSWORD_PATH, + // element: ( + // }> + // + // + // ), + // accessByMobile: true, + // }, { - path: "password", - element: ( - }> - - - ), - accessByMobile: true, - }, - { - path: "linked", + path: SETTING_LINKED_PATH, element: ( }> @@ -307,13 +315,13 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ }, { - path: "/setting/:teamIdentifier", + path: `${SETTING_PATH}/${TEAM_IDENTIFIER_TEMPLATE_PATH}`, accessByMobile: true, element: , ProtectComponent: TeamAndLoginCheck, children: [ { - path: "team-settings", + path: SETTING_TEAM_INFO_PATH, element: ( }> @@ -322,7 +330,7 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ accessByMobile: true, }, { - path: "members", + path: SETTING_MEMBERS_PATH, element: ( }> @@ -331,7 +339,7 @@ const ILLA_ROUTE_CONFIG: RoutesObjectPro[] = [ accessByMobile: true, }, { - path: "billing", + path: SETTING_BILLING_PATH, element: ( }> diff --git a/apps/agent/src/router/constants.ts b/apps/agent/src/router/constants.ts index 2c88a1ef..b2614ed5 100644 --- a/apps/agent/src/router/constants.ts +++ b/apps/agent/src/router/constants.ts @@ -19,3 +19,12 @@ export const CREATE_FUNCTION_TEMPLATE_PATH = `${TEAM_FUNCTION_TEMPLATE_PATH}/cre export const AUTH_PAGE_PATH = "/auth" export const AUTH_REDIRECT_PATH = "/authRedirect" +export const EMPTY_TEAM_PATH = "/empty-workspace" +export const SETTING_PATH = "/setting" +export const SETTING_ACCOUNT_PATH = "account" +export const SETTING_LANGUAGE_PATH = "language" +export const SETTING_PASSWORD_PATH = "password" +export const SETTING_LINKED_PATH = "linked" +export const SETTING_TEAM_INFO_PATH = "team-settings" +export const SETTING_MEMBERS_PATH = "members" +export const SETTING_BILLING_PATH = "billing" diff --git a/apps/agent/src/utils/routeHelper/hook.ts b/apps/agent/src/utils/routeHelper/hook.ts index 44b6e8c3..67ecf826 100644 --- a/apps/agent/src/utils/routeHelper/hook.ts +++ b/apps/agent/src/utils/routeHelper/hook.ts @@ -1,11 +1,11 @@ import { useCallback } from "react" import { useNavigate } from "react-router-dom" import { useLazyGetTeamsInfoQuery } from "@illa-public/user-data" +import { EMPTY_TEAM_PATH } from "@/router/constants" import { CREATE_FUNCTION_FROM_SINGLE, CREATE_FUNCTION_FROM_SINGLE_KEY, CREATE_FUNCTION_FROM_TAB_KEY, - EMPTY_TEAM_PATH, getChatPath, getCreateFunctionPath, getCreateTipiPath, diff --git a/apps/agent/src/utils/routeHelper/index.ts b/apps/agent/src/utils/routeHelper/index.ts index 5cb2280e..c968958c 100644 --- a/apps/agent/src/utils/routeHelper/index.ts +++ b/apps/agent/src/utils/routeHelper/index.ts @@ -108,9 +108,6 @@ export const genTabNavigateLink = ( } } -export const PASSWORD_PATH = "/setting/password" -export const EMPTY_TEAM_PATH = "/empty-workspace" - export enum CREATE_FUNCTION_FROM_SINGLE { CREATE_TIPIS = "createTipis", EDIT_TIPIS = "editTipis",