Skip to content

Commit aab1ab6

Browse files
douxciamjoel
authored andcommitted
refactor the logic of refreshing access_token (#10068)
1 parent 3e7f38d commit aab1ab6

File tree

7 files changed

+176
-189
lines changed

7 files changed

+176
-189
lines changed

web/app/account/avatar.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ export default function AppSelector() {
2323
params: {},
2424
})
2525

26-
if (localStorage?.getItem('console_token'))
27-
localStorage.removeItem('console_token')
26+
localStorage.removeItem('setup_status')
27+
localStorage.removeItem('console_token')
28+
localStorage.removeItem('refresh_token')
2829

2930
router.push('/signin')
3031
}

web/app/components/header/account-dropdown/index.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ export default function AppSelector({ isMobile }: IAppSelector) {
4646
params: {},
4747
})
4848

49-
if (localStorage?.getItem('console_token'))
50-
localStorage.removeItem('console_token')
49+
localStorage.removeItem('setup_status')
50+
localStorage.removeItem('console_token')
51+
localStorage.removeItem('refresh_token')
5152

5253
router.push('/signin')
5354
}

web/app/components/swr-initor.tsx

+12-27
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { SWRConfig } from 'swr'
44
import { useCallback, useEffect, useState } from 'react'
55
import type { ReactNode } from 'react'
66
import { usePathname, useRouter, useSearchParams } from 'next/navigation'
7-
import useRefreshToken from '@/hooks/use-refresh-token'
87
import { fetchSetupStatus } from '@/service/common'
98

109
interface SwrInitorProps {
@@ -15,12 +14,11 @@ const SwrInitor = ({
1514
}: SwrInitorProps) => {
1615
const router = useRouter()
1716
const searchParams = useSearchParams()
18-
const pathname = usePathname()
19-
const { getNewAccessToken } = useRefreshToken()
20-
const consoleToken = searchParams.get('access_token')
21-
const refreshToken = searchParams.get('refresh_token')
17+
const consoleToken = decodeURIComponent(searchParams.get('access_token') || '')
18+
const refreshToken = decodeURIComponent(searchParams.get('refresh_token') || '')
2219
const consoleTokenFromLocalStorage = localStorage?.getItem('console_token')
2320
const refreshTokenFromLocalStorage = localStorage?.getItem('refresh_token')
21+
const pathname = usePathname()
2422
const [init, setInit] = useState(false)
2523

2624
const isSetupFinished = useCallback(async () => {
@@ -41,25 +39,6 @@ const SwrInitor = ({
4139
}
4240
}, [])
4341

44-
const setRefreshToken = useCallback(async () => {
45-
try {
46-
if (!(consoleToken || refreshToken || consoleTokenFromLocalStorage || refreshTokenFromLocalStorage))
47-
return Promise.reject(new Error('No token found'))
48-
49-
if (consoleTokenFromLocalStorage && refreshTokenFromLocalStorage)
50-
await getNewAccessToken()
51-
52-
if (consoleToken && refreshToken) {
53-
localStorage.setItem('console_token', consoleToken)
54-
localStorage.setItem('refresh_token', refreshToken)
55-
await getNewAccessToken()
56-
}
57-
}
58-
catch (error) {
59-
return Promise.reject(error)
60-
}
61-
}, [consoleToken, refreshToken, consoleTokenFromLocalStorage, refreshTokenFromLocalStorage, getNewAccessToken])
62-
6342
useEffect(() => {
6443
(async () => {
6544
try {
@@ -68,17 +47,23 @@ const SwrInitor = ({
6847
router.replace('/install')
6948
return
7049
}
71-
await setRefreshToken()
72-
if (searchParams.has('access_token') || searchParams.has('refresh_token'))
50+
if (!((consoleToken && refreshToken) || (consoleTokenFromLocalStorage && refreshTokenFromLocalStorage))) {
51+
router.replace('/signin')
52+
return
53+
}
54+
if (searchParams.has('access_token') || searchParams.has('refresh_token')) {
55+
consoleToken && localStorage.setItem('console_token', consoleToken)
56+
refreshToken && localStorage.setItem('refresh_token', refreshToken)
7357
router.replace(pathname)
58+
}
7459

7560
setInit(true)
7661
}
7762
catch (error) {
7863
router.replace('/signin')
7964
}
8065
})()
81-
}, [isSetupFinished, setRefreshToken, router, pathname, searchParams])
66+
}, [isSetupFinished, router, pathname, searchParams, consoleToken, refreshToken, consoleTokenFromLocalStorage, refreshTokenFromLocalStorage])
8267

8368
return init
8469
? (

web/app/signin/normalForm.tsx

+1-4
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ import cn from '@/utils/classnames'
1212
import { getSystemFeatures, invitationCheck } from '@/service/common'
1313
import { defaultSystemFeatures } from '@/types/feature'
1414
import Toast from '@/app/components/base/toast'
15-
import useRefreshToken from '@/hooks/use-refresh-token'
1615
import { IS_CE_EDITION } from '@/config'
1716

1817
const NormalForm = () => {
19-
const { getNewAccessToken } = useRefreshToken()
2018
const { t } = useTranslation()
2119
const router = useRouter()
2220
const searchParams = useSearchParams()
@@ -38,7 +36,6 @@ const NormalForm = () => {
3836
if (consoleToken && refreshToken) {
3937
localStorage.setItem('console_token', consoleToken)
4038
localStorage.setItem('refresh_token', refreshToken)
41-
getNewAccessToken()
4239
router.replace('/apps')
4340
return
4441
}
@@ -71,7 +68,7 @@ const NormalForm = () => {
7168
setSystemFeatures(defaultSystemFeatures)
7269
}
7370
finally { setIsLoading(false) }
74-
}, [consoleToken, refreshToken, message, router, invite_token, isInviteLink, getNewAccessToken])
71+
}, [consoleToken, refreshToken, message, router, invite_token, isInviteLink])
7572
useEffect(() => {
7673
init()
7774
}, [init])

web/hooks/use-refresh-token.ts

-99
This file was deleted.

0 commit comments

Comments
 (0)