From 5efa70f3a1e74e819eedb6a3877fc4634ef637ac Mon Sep 17 00:00:00 2001 From: papapatrick <109422393+Patrickill@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:18:55 +0800 Subject: [PATCH] feat: add cookies tip drawer (#2935) --- packages/web/i18n/en/login.json | 7 +++- packages/web/i18n/zh/login.json | 7 +++- projects/app/src/pages/login/index.tsx | 54 ++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 4 deletions(-) diff --git a/packages/web/i18n/en/login.json b/packages/web/i18n/en/login.json index 049f20113..305977fa8 100644 --- a/packages/web/i18n/en/login.json +++ b/packages/web/i18n/en/login.json @@ -12,5 +12,8 @@ "register": "Register", "root_password_placeholder": "The root user password is the value of the environment variable DEFAULT_ROOT_PSW", "terms": "Terms", - "use_root_login": "Log in as root user" -} \ No newline at end of file + "use_root_login": "Log in as root user", + "agree": "agree", + "cookies_tip": " This website uses cookies to provide a better service experience. By continuing to use the site, you agree to our Cookie Policy.", + "privacy_policy": "Privacy Policy" +} diff --git a/packages/web/i18n/zh/login.json b/packages/web/i18n/zh/login.json index 3c0bc87e6..7cbb446ba 100644 --- a/packages/web/i18n/zh/login.json +++ b/packages/web/i18n/zh/login.json @@ -12,5 +12,8 @@ "use_root_login": "使用 root 用户登录", "redirect": "跳转", "no_remind": "不再提醒", - "Chinese_ip_tip": "检测到您是中国大陆 IP,点击跳转访问中国大陆版。" -} \ No newline at end of file + "Chinese_ip_tip": "检测到您是中国大陆 IP,点击跳转访问中国大陆版。", + "agree": "同意", + "cookies_tip": "本网站使用 cookies 提供更好的服务体验。继续使用即表示您同意我们的 Cookie 政策。", + "privacy_policy": "隐私政策" +} diff --git a/projects/app/src/pages/login/index.tsx b/projects/app/src/pages/login/index.tsx index b498119f0..0dfd01e1e 100644 --- a/projects/app/src/pages/login/index.tsx +++ b/projects/app/src/pages/login/index.tsx @@ -27,6 +27,7 @@ import { useTranslation } from 'next-i18next'; import I18nLngSelector from '@/components/Select/I18nLngSelector'; import { useSystem } from '@fastgpt/web/hooks/useSystem'; import { GET } from '@/web/common/api/request'; +import { getDocPath } from '@/web/common/system/doc'; const RegisterForm = dynamic(() => import('./components/RegisterForm')); const ForgetPasswordForm = dynamic(() => import('./components/ForgetPasswordForm')); @@ -50,10 +51,18 @@ const Login = ({ ChineseRedirectUrl }: { ChineseRedirectUrl: string }) => { onOpen: onOpenRedirect, onClose: onCloseRedirect } = useDisclosure(); + const { + isOpen: isOpenCookiesDrawer, + onOpen: onOpenCookiesDrawer, + onClose: onCloseCookiesDrawer + } = useDisclosure(); const [showRedirect, setShowRedirect] = useLocalStorageState('showRedirect', { defaultValue: true }); + const cookieVersion = 1; + const [localCookieVersion, setLocalCookieVersion] = + useLocalStorageState('localCookieVersion'); const loginSuccess = useCallback( (res: ResLogin) => { @@ -111,6 +120,7 @@ const Login = ({ ChineseRedirectUrl }: { ChineseRedirectUrl: string }) => { clearToken(); router.prefetch('/app/list'); ChineseRedirectUrl && showRedirect && checkIpInChina(); + localCookieVersion !== cookieVersion && onOpenCookiesDrawer(); }); return ( @@ -182,6 +192,15 @@ const Login = ({ ChineseRedirectUrl }: { ChineseRedirectUrl: string }) => { disableDrawer={() => setShowRedirect(false)} /> )} + {isOpenCookiesDrawer && ( + { + setLocalCookieVersion(cookieVersion); + onCloseCookiesDrawer(); + }} + onClose={onCloseCookiesDrawer} + /> + )} ); }; @@ -228,6 +247,41 @@ function RedirectDrawer({ ); } +function CookiesDrawer({ onClose, onAgree }: { onClose: () => void; onAgree: () => void }) { + const { t } = useTranslation(); + const router = useRouter(); + + return ( + + + + + + + + {t('login:cookies_tip')} + + router.push(getDocPath('/docs/agreement/privacy/'))} + > + {t('login:privacy_policy')} + + + + + + + ); +} + export async function getServerSideProps(context: any) { return { props: {